Clean Code 读书笔记

2017-06-27  本文已影响35人  Simon_z

1.有意义的命名

避免误导
    eg: accoutList  如果代表一系列帐号, 除非真是List容器, 不然就会误导其他开发者
不要把类型或者作用域编进名称里面;
    eg: String phoneString
做有意义的区分

Product, ProductInfo 和 ProductData, AccoutManager和AccountControl之类的这种名称, 意义没什么区别, 没太大区别, 要避免;
不过一套代码中, 风格要保持统一, 如果选择ProductInfo, 其他类似的应该都命名为 xxxInfo;

类名和方法名

2.函数

得墨忒耳律: 模块不应该了解它所操作对象的内部情形;

一个类 C 的方法 f 只应该调用如下对象的方法

短小, 只做一件事情, 只做同一层级的事情, 无副作用
每个函数都是一个抽象层级;

每个函数应该只包含同一层级的代码; eg: 不能包含其某一流程的子步骤

switch if 语句只包含一行代码

if switch 之类的语句, 理论上就是满足一个条件, 做一个功能; 而所做的功能, 就是一件事, 要提成一个单独的函数;

参数不能超过3个

参数不能过多, 参数过多就应该考虑合并参数;
如果无法合并, 要考虑是否该用一个类封装起来;

不能含有布尔值的参数

含有布尔值, 及说明该函数含有条件判断语句, 有2个逻辑, 做了两件不同的事情, 应该拆分成2个不同的函数;

分隔指令与询问

做什么事, 和回答是什么事, 要分开;

使用异常代替错误码
抽离 try-catch 语句

try-catch在正常的逻辑中, 会把错误处理和正常流程混为一谈;
应该把正常流程封装成一个函数, 错误处理封装另外的函数中, 然后用函数整合正常流程和错误流程;

别重复, 不要有重复的代码

3.注释

4.错误处理

常规流程和错误流程分开
返回特例对象, 别返回null

遇到异常时,如果要返回, 应该是返回特例对象, 千万别返回null

别传递null值
上一篇 下一篇

猜你喜欢

热点阅读