美文网首页
重构可以带来什么好处

重构可以带来什么好处

作者: 等你足够强了再说吧 | 来源:发表于2022-02-06 12:51 被阅读0次

重构可以让代码更整洁,更易于理解和维护。代码味道(Code Smells)的辨别需要实践和经验:设计不良的特征说明代码存在更深层次的问题。工具可以帮助我们逐步重构,并防止破坏代码。

代码坏味道只是一种表象,它通常对应于系统中更深层次的问题。
如果重视不够,没有适当地维护或改进代码,那么代码质量就会下降。

代码坏味道示例:

  • “面向对象滥用”;这类异味和面向对象设计的不完全或错误实现有关。辨别“面向对象滥用”异味有助于找出可能违反面向对象设计原则、可以导致错误的对象行为的代码。
  • “变更障碍”,即代码的一处变更(例如,实现一个新特性或者调整一个现有特性)会影响许多类,需要对整个代码进行大量的修改。“平行继承层次”或“发散式变更”(Divergent Change)就是这类代码异味的例子。

发散式变化(Divergent Change)
发散式变化(Divergent Change) 类似于 霰弹式修改(Shotgun Surgery) ,但实际上完全不同。发散式变化(Divergent Change) 在一个类中修改多处。霰弹式修改(Shotgun Surgery)指的是同时对多个类进行单一的修改。
特征
你发现你想要修改一个函数,却必须要同时修改许多不相关的函数。例如,当你想要添加一个新的产品类型时,你需要同步修改对产品进行查找、显示、排序的函数。
问题原因
通常,这种发散式修改是由于编程结构不合理或者“复制-粘贴式编程”。
解决办法
运用 提炼类(Extract Class) 拆分类的行为。
如果不同的类有相同的行为,你可以考虑通过继承来合并类(提炼超类(Extract Superclass) 和 提炼子类(Extract Subclass))。

收益

  • 提高代码组织结构
  • 减少重复代码
    重构方法说明
    提炼类(Extract Class)
  • 问题
    某个类做了不止一件事。
    解决
    建立一个新类,将相关的字段和函数从旧类搬移到新类。
    提炼超类(Extract Superclass)
  • 问题
    两个类有相似特性。
    解决
    为这两个类建立一个超类,将相同特性移至超类。
    提炼子类(Extract Subclass)
  • 问题
    一个类中有些特性仅用于特定场景。
    解决
    创建一个子类,并将用于特殊场景的特性置入其中。
重构可以带来什么好处?

重构的目标是更整洁的代码,就是说,重构旨在让代码更容易理解,降低变更成本

什么时候应该重构?什么时候不应该?
  • 重构,像编写测试一样,应该成为同一特性实现的一部分。它不是一个独立的活动,当你希望修改代码,而代码本身 尚未做好变更准备时,重构它。重构是测试驱动开发TDD的一个重要步骤。
  • 代码审查也是重构执行的一个最佳选择
  • 另一方面,为了实现“完美的代码”,而在整个代码库上进行大量低价值的重构被称为镀金 。这有损于代码整洁,因为它削弱了重构的真实性需求,盲目地为了重构而重构。如果代码正常,就不需要修改,不要碰它

Refactoring and Code Smells – A Journey Toward Cleaner Code
https://blog.csdn.net/cpongo2ppp1/article/details/89019521

相关文章

  • 重构可以带来什么好处

    重构可以让代码更整洁,更易于理解和维护。代码味道(Code Smells)的辨别需要实践和经验:设计不良的特征说明...

  • 自信可以带来什么好处?

    自卑和自信,是两种不一样的心理状态。 自卑心理会让一个人过于敏感,太注重别人的看法,在遇到自己做不好或,获得负面反...

  • 坚持写作可以带来什么好处?

    “人并不是突然死去的,而是慢慢死去的,因为我们生活在自己的记忆中,而当这些记忆一点点消失,我们就在一点点死亡。但记...

  • day_3服务端渲染的一些常识

    当我们使用VUE开发的好好的,为什么需要服务端渲染那么复杂的操作来重构我们的页面,它能给我们带来什么好处呢。本人感...

  • DataBinding结合AspectJ防止多次点击

    写在前面 最近一直在找时间重构代码,每一次重构都能带来许多好处,比如精简代码,提高代码质量,减轻团队之间的问题,当...

  • 阅读《重构》之一:重要的第一个例子

    第一个例子很重要,因为它通过实际操作带你走进什么是重构,为何重构可以带来实用的价值。作者也在书开头说了,理论容易让...

  • ISO 14001可以为客户带来什么好处

    大多数将通过ISO 14001:认证其EMS(环境管理体系)的组织都将充分了解其带来的好处。这些好处包括降低成本,...

  • 商业智能可以为企业带来什么好处?

    随着数字化管理,越来越多公司在日常运营和商业决策中引入商业智能,对于商业智能也越来越重视。那么,很多不了解商业智能...

  • 销售页写作指南

    一 销售页基础知识 1.1 销售页的基本逻辑 我是谁——我能给你带来什么好处——通过什么方式给你带来好处——为什么...

  • 项目跟踪可以带来哪些好处

    项目跟踪能够带来好处很多。认识到这些好处之后,你就会更有动力去做好项目跟踪的工作了。有时候也可以适当把这些好处告诉...

网友评论

      本文标题:重构可以带来什么好处

      本文链接:https://www.haomeiwen.com/subject/pieukrtx.html