美文网首页
一次简单代码重构

一次简单代码重构

作者: 小艺888 | 来源:发表于2018-12-13 17:47 被阅读0次

一、为什么要重构?                                                                                                               一个新开发的项目,如果开发人员水平不太差,代码不会太难看懂。首先,要明确一点,并不是代码写得越难懂你越牛逼。同样复杂度的功能,越简单易懂的代码越好。当然,有经验的程序员,会选用最合适的数据结构和算法;最合适的设计模式和架构。但是随着年月的增长,功能不断迭代,甚至开发人员换了一茬又一茬,代码慢慢出现腐朽的味道。这时候我们应该明确另一个观点,持续重构,避免重写,重新设计和重写不能成为重构的代言词。重写的风险是很大的,除非时间足够,并且你对此项目了如指掌。

当代码越来越腐朽的时候,就像一座摇摇欲坠的大厦,你还继续加东西,无异于给骆驼添加稻草。这时候你会发现,想加一点代码,要动几个地方;删改代码牵一发而动全身;项目规模继续膨胀,冗余代码随处可见。这时候,就意味着重构的时机到了。重构就是对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。                                                                                               

二、如何重构?

重构的方法有很多,这里重点说几种,快速修复项目的严重设计缺陷:

1、数据与UI分离。很多代码,ui界面和数据类解析、算法等混在一起,很难读懂,并且后期拓展性很差,换一种数据来源或者换一种UI显示方式,要理解和修改的地方很多,而且容易改错。重构方法:1)如果数据解析种类比较多,可以考虑用策略模式。2)如果解析比较简单,可以单独写一个数据解析类。3)更通用的方法,类中比较独立的方法改为static方法,使用工具类维护。

2、多态取代条件。如果使用条件,那么功能增加后,类的代码会越来越多。如何简单快速地改为多态?举个例子,如果一个类中包含语文、数学、英语三个科目:原来的类名为Study,代码有五千行。我们把Study变为抽象父类,把和具体科目关联的代码抽取到三个子类中,变为四个类:Study -> Study 、 StudyCn、StudyEn、StudyMath。然后我们把原来的方法改为抽象方法:

1)一个方法只有if else 可以直接变为抽象方法,子类基础它。

2)如果还有公共代码,需要写一个新的抽象方法。

最后,我们的代码Study两千行,StudyCn、StudyEn、StudyMath各1000行。虽然看起来代码数量没变化,但是逻辑清晰了很多,我如果再增加物理、化学、生物......我只需要新增一个类。我如果想改语文的代码,我只需要阅读1000行代码而不是五千行。这种个人、团队的开发效率的提升可想而知。

3、其他原则:1)观察属性、方法或类,如果可以抽象为一类事物,归纳提炼它们。2)用封装控制可见度,接口越少越好。3)消除依赖,使代码高内聚低耦合。4)使用常量代替魔。常量尽量提炼到一个类下,甚至一个包下。以免要改常量到处找。5)不确定时,偏向使用组合而不是继承

相关文章

  • 一次简单代码重构

    一、为什么要重构? ...

  • 代码重构专题(转载)

    代码重构(一):函数重构规则代码重构(二):类重构规则代码重构(三):数据重构规则代码重构(四):条件表达式重构规...

  • 《重构》一书总结(二)

    《重构》一书总结(二) 重构的重点,在于对那些代码进行重构,如果重构不当,反而适得其反。 重构代码终结如下 1.D...

  • DataBinding结合AspectJ防止多次点击

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

  • Mvc分页组件MvcSimplePager代码重构

    Mvc分页组件MvcSimplePager代码重构 Mvc分页组件MvcSimplePager代码重构1.1 In...

  • 编程的方法——重构、测试等

    重构 为什么要重构? 重构代码是保持代码质量的一个极其有效的手段,它可以避免你的代码腐化到无可救药的地步。 重构可...

  • 代码重构利器

    使用重构件(Codemod)加速 JavaScript 开发和重构代码重构利器 —— jscodeshift 对于...

  • 为什么要代码重构?如何重构?常见重构技巧

    关于重构 为什么要重构 代码重构漫画 项目在不断演进过程中,代码不停地在堆砌。如果没有人为代码的质量负责,代码总是...

  • 记一次代码重构

    单一职责 功能单一 功能单一是SRP最基本要求,也就是你一个类的功能职责要单一,这样内聚性才高。 比如,下面这个参...

  • 重构

    重构时,先梳理代码,删除无用的逻辑,进行小的消除重复代码重构,封装小方法重构,等等,目的是让大段大段代码之前的耦合...

网友评论

      本文标题:一次简单代码重构

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