美文网首页PHP经验分享
重构方法论之HOW

重构方法论之HOW

作者: 半亩房顶 | 来源:发表于2019-09-20 14:26 被阅读0次

    重构

    重构是个我们必然会遇上的问题,这个项目中准备收集整理一些例子,并辅以示例,以期更好的学习重构

    WHY

    系统开发就如同一个焦油坑,当所有的问题,沟通、困难、资源制约交织在一起的时候,团队的行动就会越来越慢,最终沉没于焦油坑。提高协作效率是每一个团队都需要面对并解决的问题 --《人月神话》

    • 提高代码可读性
    • 提高代码质量
    • 提高代码灵活性
    • 等等
      回归本质,是要降低成本,提高效率

    WHEN

    代码的坏味道

    • 过长函数 (Long Method)
    • 过大的类 (Large Class)
    • 过长参数列表 (Long Parameter List)
    • 无用函数参数(Unused Function Parameter)
    • 不可读或者可读性差的变量名和函数名 (unread variable or function name)
    • 异曲同工类(Alternative Classes with Different Interfaces)
    • 令人迷惑的临时字段(Temporary Field)
    • 过多注释 (Too Many Comments)
    • 等等
    • 三次法则
      第一次做某件事时只管去做
      第二次做类似的事会产生反感,但无论如何还是可以去做
      第三次再做类似的事,你就应该重构了

    • 添加功能时
      当你发现添加功能不够顺畅,找不到合适的切入点时,说明程序可拓展性不再满足需求

    • 修补错误
      当你发现修改错误时束手束脚,不能很快的定位问题并简洁明了的修改问题,说明程序不够清晰,较为混乱

    • 复查代码时
      当你发现程序表意不够清晰,无法快速理解代码的功能,说明其不够清晰,可读性较差

    HOW

    SOLID面向对象设计

    • Single Responsibility Principle (SRP) (单一职责)
    • Open/Closed Principle (OCP) (开闭原则)
    • Liskov Substitution Principle (LSP) (里氏替换)
    • Interface Segregation Principle (ISP) (接口隔离)
    • Dependency Inversion Principle (DIP) (依赖反转)
    • Rename Method
    • Extract Method/Class/Subclass/Superclass/Interface
    • Move Field/Method
    • Remove Control Flag/Middle Man/Parameter/Setting Method
    • Pull Up Field/Method
    • Push Down Field/Method
    • Replace Magic Number With Symbolic Constant
    • Replace Conditional With Polymorphism
    • Replace Constructor With Factory Method
      详情见GitHub/howToRefactor

    以上

    欢迎大家关注我的公众号


    半亩房顶

    相关文章

      网友评论

        本文标题:重构方法论之HOW

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