什么时候不应该重构?

博客讨论了代码重构与重写的时机。当代码无法正常工作或难以修改时,重构难以保证代码稳定,此时应重新设计和重写;工期接近死期时,重构效果难以及时体现;而若为功能牺牲质量,代码有隐患,可适时重构,时间不够也是需重构的信号。
  •  代码不能工作了,或者说有些代码没有办法修改了,根本就没有办法让代码保证稳定;这个时候不应该重构。重构至少要保证代码可以正常的工作;重构只能帮助你找BUG,但不能绝对消除BUG。这种情况下,最好重新设计和重写。
  • 当你工期接近死期的时候。因为这个时候你重构的效果会在死期之后才能体现,但太晚了。另外一种说法就是,如果你为了功能性而放弃了质量,你的代码存在隐患,你就想负债一样,这些债务在适当的时候要还一还,那个时候使用重构。

其实时间不够,是需要重构的一个信号!!

### 多态与重构的区别及其适用场景 #### 1. **多态的核心概念** 多态是一种面向对象编程的重要特性,它允许可通过父类类型的引用调用子类的具体实现[^2]。这种机制的主要目的是提升代码的灵活性和可扩展性。例如,在继承体系中,可以通过定义抽象基类或接口来统一处理多个派生类的行为。 在 Java 中,多态通常用于以下场景: - 需要动态绑定:即运行时决定调用哪个方法。 - 提高代码复用性:通过父类引用指向子类实例的方式,减少重复代码。 - 支持未来的扩展:新增加的子类无需修改现有代码逻辑即可融入系统。 ```java abstract class Shape { public abstract void draw(); } class Circle extends Shape { @Override public void draw() { System.out.println("Drawing a circle"); } } class Rectangle extends Shape { @Override public void draw() { System.out.println("Drawing a rectangle"); } } ``` 以上代码展示了如何利用多态绘制同形状,而需要针对每种形状单独编写函数[^4]。 --- #### 2. **重构的目的** 重构是指在改变外部行为的前提下优化已有代码的设计[^1]。其主要目标包括但限于以下几个方面: - 改善代码结构以增强可读性和可维护性。 - 清除代码中的“坏味道”,比如冗余代码、复杂的条件判断等。 - 减少技术债务并提高团队协作效率。 常见的重构手法包括提取方法、重命名变量、替换硬编码数值为常量等等。这些操作有助于消除潜在缺陷并简化复杂逻辑。 假设存在一段难以理解且容易出错的代码: ```java public int calculatePrice(int quantity, double pricePerUnit) { if (quantity > 50 && pricePerUnit >= 100) { return (int)(pricePerUnit * quantity * 0.9); } else if (quantity <= 50 || pricePerUnit < 100){ return (int)(pricePerUnit * quantity); } return 0; } ``` 经过适当重构后变得清晰明了: ```java private boolean hasDiscount(int quantity, double pricePerUnit) { return quantity > 50 && pricePerUnit >= 100; } public int calculatePrice(int quantity, double pricePerUnit) { if (hasDiscount(quantity, pricePerUnit)) { return (int)(pricePerUnit * quantity * 0.9); } return (int)(pricePerUnit * quantity); } ``` 此版本仅更易于阅读还降低了错误发生的可能性[^1]。 --- #### 3. **选择多态而非重构的理由** 尽管两者都能改善软件质量,但在特定情境下可能更适合采用多态而是简单地进行重构。以下是几个关键原因: ##### (1)需求涉及层次化设计 当应用程序需要支持多种相似但又有所差异的操作时(如同一业务流程下的同类型),应优先考虑引入多态机制。因为这样能够自然形成一套基于继承关系的解决方案,从而避免大量分支语句带来的混乱局面[^3]。 ##### (2)追求更高的灵活性与扩展能力 如果预计将来会有新的功能加入进来,则应当倾向于构建开放式的架构模型——借助于多态可以让新组件无缝接入当前框架之中,而必改动原有部分。相比之下单纯依赖传统意义上的重构很难达成这一效果[^2]。 ##### (3)性能考量因素较少 虽然理论上讲过度使用虚函数调用可能导致一定开销增加,但对于大多数现代计算机而言这点影响微乎其微。因此除非确实面临极端情况外一般会成为阻碍选用多态方案的因素之一。 --- #### 结论 综上所述,当面对需要解决多样化实体间交互问题或者期望获得良好延展性的场合时,往往推荐采纳多态策略;而对于那些仅仅只是希望让既有源码变得更加整洁有序的任务来说,则更多时候只需执行常规意义上的重构工作就够了[^1][^2]. --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值