曾经读过一次clean code,最终书丢了,确切说是被人偷了!距今已是两年多三年!
clean code全书17章,我将针对性的写点读书笔记。
至于糟糕的代码有那些坏处不在本文范围内,我直说重点。
什么是整洁的代码?
1、我喜欢优雅和高效的代码,代码逻辑直接了当,让缺陷无法隐藏,减少依赖关系,使之便于维护,根据某种分层策略完善错误处理,性能调至最优,免得别人因为调优性能而把代码搞得一团糟,整洁代码只做一件事。
2、整洁的代码简单直接犹如优美的散文,充满了干净利落的抽象和直截了当的控制。
3、字面编程,测试驱动开发,其他人可以增补。
4、整洁的代码是别人无法再改进。
5、能通过所有测试,没有重复代码,提现系统中的全部设计理念,尽量少的实体、方法、函数等。
有意义的命名
1、要名副其实、消除魔幻数字、可以考虑进行封装。
2、避免误导,比如accountList,而它的容器不是list,比如o和l特别像0和1,比如两个很像的方法名,做有意义的区分,比如personInfo和personData有什么区别?
3、使用可读的名称,即不要随便缩写,year、month、day不要写作ymh
4、可搜索,其实依旧是魔幻数字,不要随意使用数字,而是给他一个名副其实的名称,然后使用这个变量或者常量。
5、前缀是多余的,比如m_name等。
6、不用单字母,类名应该是名词或短语而不是动词,方法名应该是动词或者动词短语,重载构造器时,使用描述了参数的静态工厂方法名,Person person = new Person(10, "张三"), 没有Person person = Person.createByAgeAndName(10, "张三");好!可以考虑把构造函数写成private,强制使用createByAgeAndName。
7、别扮可爱,别使用与文化相关的单词,比如eatMyShorts表示abort
8、为每个抽象概念选一个词并且一以贯之,不要一会model一会bean,他们没区别,却不知道该用那一个。
9、不要用一语双关的单词,比如add,不要为了保持一致而用一个一语双关的单词。
10、语境,上下文语境不好,代码逻辑混乱,也不要添加不必要的语境。
以上是clean code第一二章的笔记,相比之下,我们的代码缺少单元测试是真的,我们很多时候不写它,像我,甚至不知道怎么写,代码重复可能时有出现,方法做的事很多也是事实,魔幻数字总是懒得处理,不懂得尽可能封装,虽然封装了,但距离作者说的还差的远!单字母也会在循环里出现,使用描述了参数的静态工厂方法也不多,而且builder用的更少!上下文语境更是很少注意!
以后,可以考虑从以下几个方法提高自己:
1、单元测试真的有必要?该如何高效的测试?
2、拒绝代码重复
3、简化方法作用
4、拒绝魔幻数字,复杂逻辑进行封装
5、循环里不使用单字母
6、使用描述了参数的静态工厂方法、使用builder