常见代码重构技巧(非常实用)1_代码重构漫画.jpeg
项目在不断演进过程中,代码不停地在堆砌 。如果没有人为代码的质量负责,代码总是会往越来越混乱的方向演进 。当混乱到一定程度之后,量变引起质变,项目的维护成本已经高过重新开发一套新代码的成本,想要再去重构 , 已经没有人能做到了 。
造成这样的原因往往有以下几点:
对于此类问题,业界已有有很好的解决思路:通过持续不断的重构将代码中的“坏味道”清除掉 。
重构一书的作者Martin Fowler对重构的定义:
根据重构的规模可以大致分为大型重构和小型重构:
大型重构:对顶层代码设计的重构,包括:系统、模块、代码结构、类与类之间的关系等的重构,重构的手段有:分层、模块化、解耦、抽象可复用组件等等 。这类重构的工具就是我们学习过的那些设计思想、原则和模式 。这类重构涉及的代码改动会比较多,影响面会比较大,所以难度也较大,耗时会比较长,引入bug的风险也会相对比较大 。
小型重构:对代码细节的重构,主要是针对类、函数、变量等代码级别的重构 , 比如规范命名和注释、消除超大类或函数、提取重复代码等等 。小型重构更多的是使用统一的编码规范 。这类重构要修改的地方比较集中,比较简单,可操作性较强 , 耗时会比较短 , 引入bug的风险相对来说也会比较小 。什么时候重构 新功能开发、修bug或者代码review中出现“代码坏味道”,我们就应该及时进行重构 。持续在日常开发中进行小重构,能够降低重构和测试的成本 。
2_代码常见问题.png
代码重复
方法过长
过大的类
逻辑分散
严重的情结依恋
数据泥团/基本类型偏执
不合理的继承体系
过多的条件判断
过长的参数列
临时变量过多
令人迷惑的暂时字段
纯数据类
不恰当的命名
过多的注释
3_代码质量如何衡量.jpg
代码质量的评价有很强的主观性,描述代码质量的词汇也有很多 , 比如可读性、可维护性、灵活、优雅、简洁 。这些词汇是从不同的维度去评价代码质量的 。其中,可维护性、可读性、可扩展性又是提到最多的、最重要的三个评价标准 。
要写出高质量代码,我们就需要掌握一些更加细化、更加能落地的编程方法论,这就包含面向对象设计思想、设计原则、设计模式、编码规范、重构技巧等 。
4_SOLID原则.png
一个类只负责完成一个职责或者功能,不要存在多于一种导致类变更的原因 。
单一职责原则通过避免设计大而全的类,避免将不相关的功能耦合在一起,来提高类的内聚性 。同时,类职责单一 , 类依赖的和被依赖的其他类也会变少 , 减少了代码的耦合性,以此来实现代码的高内聚、松耦合 。但是,如果拆分得过细,实际上会适得其反,反倒会降低内聚性,也会影响代码的可维护性 。
添加一个新的功能 , 应该是通过在已有代码基础上扩展代码(新增模块、类、方法、属性等),而非修改已有代码(修改模块、类、方法、属性等)的方式来完成 。
开闭原则并不是说完全杜绝修改,而是以最小的修改代码的代价来完成新功能的开发 。
很多设计原则、设计思想、设计模式,都是以提高代码的扩展性为最终目的的 。特别是 23 种经典设计模式 , 大部分都是为了解决代码的扩展性问题而总结出来的,都是以开闭原则为指导原则的 。最常用来提高代码扩展性的方法有:多态、依赖注入、基于接口而非实现编程,以及大部分的设计模式(比如,装饰、策略、模板、职责链、状态) 。
推荐阅读
- 视频号怎么扣点,视频号怎么收入
- 视频上下集符号是什么,上下的视频
- 包含postgre无主键同步的词条
- go语言切片需要释放么 go语言切片扩容
- python中sin什么意思,python画sin函数
- 冒险岛DS下载游戏,冒险岛1下载
- c语言数组函数回调 c语言中调用函数,怎么返回数组的值
- oracle中删除表格数据恢复,oracle 恢复删除表
- 关于postgresql9.3性能的信息