Limboy
Posts
Thoughts
Books
Photos
Music
Movies
关于易维护的代码
2024-03-04
在编程领域,编写易维护代码是很重要的一部分,不然就会出现「屎山雕花」的情况。以下是我关于编写「易维护代码」的一些心得。
易维护的代码有怎样的特性?
易调式
出现问题后,可以快速定位问题出现的原因。
易调整
可以方便地找到改动处,以实现需求或修复 Bug。
改动带来的影响面明确且可控。(如果出现「字符串依赖」,而相关的 package 又都是二进制就会很麻烦)。
易测试
容易写测试。
容易执行测试。
测试可以覆盖大部分代码和场景。
易理解
通过看模块/方法/变量名/注释就能大概知道内容。
统一的代码风格。
写出容易维护的代码需要考虑哪些因素?
做好封装
明确哪些数据和能力是可被外部获取的,哪些应该是内部处理的(
.h
/
.m
)。
提供的能力是否有高关联度(高内聚)。
在做好封装的基础上,可以进行模块化开发,通过接口或协议来通信,将变化封装在模块内。
比较难的一点是模块的划分,一个技巧是将经常会联动改变的模块合为一个。
处理好状态
是否有必要新增一个状态,可否组合已有状态。
状态之间的切换是否清晰(状态多且复杂,可考虑用一个 Library 来管理)。
命好名
是否直观。
是否只做一件事。
不好理解的部分做好注释(为什么会有这段代码,它是怎么工作的)。
写好日志
出现问题时,可以通过日志快速定位。
处理好 Error 日志,尤其是当 Error 在多个模块之间传递时。
一些 code smell(不好的迹象)
方法体很长。(不方便复用和测试)
方法的参数很多。(不好理解和使用,也可能是没抽象好)
重复的代码。(多处出现了同样/类似的代码)
一个小的改动会涉及到多个文件。(可能没封装好)
God Object。(很多不相关的内容聚合到了一起)
紧耦合。(比如明明只需要一个 Plain Object,却在参数里要求传入一个特定的 class instance)
通过一些 trick,依赖了 class 的内部实现。
一些技巧
精读 1 - 2 个优秀的有足够复杂度的开源项目。
重构项目,直到它具备了足够好的易维护性。
❤️
reply
留言
*
昵称
*
邮箱
*
(不会被公开)
个人网站