代码整洁之道
稍后等于永不(Later equals never)
整洁的代码只做好一件事,代码只讲述事实,不引人猜测。在意代码重复,有意义的命名,小规模抽象
*命名
一旦发现有更好的名称,就换掉旧的
只是为了满足编译器或解释器的需要而写代码,就会制造麻烦。(以数字系列,或废话ProductInfo或ProductData的区间,没区别)
使用读得出来的名称
使用可搜索的名称
代码读得越多,眼中越没有前缀m_, g_,
避免思维映射,明确是王道
类名和对象名应该是名词或名词短语,不应该是动词;
方法名应该是动词或动词短语
给每个抽象概念选一个词,并且一以贯之
别用双关语add,insert,append
给这些事取个技术性的名称通常是最靠谱的做法;或采用源自问题领域的名称
**函数
函数的第一规则是要短小(一页面20封顶为佳,3-5行的代码最好注释都不用写)
if..else,while,for语句中的代码块应该只有一行,将switch语句埋到抽象工厂底下
只做一件事
最理想的参数个数是0,其实是1,2,3。不超过3
应避免使用输出参数。如果函数必须要修改某种状态,就修改所属对象的状态
依赖磁铁
DRY原则
写代码很像写别的东西。先想写什么就写什么,然后再打磨它。
***注释
滥用标记栏,就会沉没在背景噪音中,被忽略掉
发现自己想标记右括号,其实应该做的是缩短函数
直接把代码注释掉是讨厌的做法。别这么干!(源代码管理
****格式
空白行隔开概念,而靠近的代码行则暗示了它们之间的紧密关系
尽力保持代码行短小
******对象和数据结构
过程式代码难以添加新数据结构,因为必须修改所有函数。面对对象代码难以添加新函数,因为必须修改所有类
模块不应了解它所操作对象的内部情形
******错误处理
返回NULL,基本上是给自己增加工作量,也是给调用者添乱,只要一处没有检查NULL值,应用程序就会失控(返回枚举的错误标识情况?)
运行所有测试,
不可重复,
表达了程序员的意图,
尽可能减少类和方法的数量
“小规模复用”可大量降低系统复杂性