《设计模式之禅》读完。开始重读《代码整洁之道》。
命名
- 用有意义的名字,不用无意义的字符
- 名字要能够读出来,比如一个表明年月日的变量,不要用 ymd,要用 yearMonthDay
- 避免误导,不是 List 结构名字就不要有 list,不用用小写英文
l
、大写英文O
,和数字0
、1
傻傻分不清楚 - 如果一个名字要在很多地方用到,不要太短,要便于搜索,比如一个名字叫 a,那一搜到处都是这字符,基本上不可能定位到想找的名字
- 变量名不用加 m 前缀,不能提供更多的信息,是冗余
- 接口名不用添加前缀
I
,不用让人特地知道它是接口,原因可能是实现者不一定和接口同名,那样就不需要区分,所以加I
属于冗余,只有某些情况实现者也用那个名字时,那就给实现者加后缀Impl
函数
- 函数要尽可能短小,越小越好,每个函数只负责一件事
- 函数的选择、循环里只写一句话,调用其他方法,这要求有点高
- try/catch 里的代码单独抽出一个方法,这结构很丑陋,所以要短小些,catch 之后不要有其他语句,也就要求这个函数只做这个异常处理
- 函数名不怕长,要尽可能提供明确的描述,用动词
- 参数越少越好,如果多要考虑源头分拆多个调用,单一职责要求的必然后果
- 参数很多时,考虑将其封装成对象,这样参数意义更明确
- 参数不要用布尔值,而是调用者自己判断,然后调用两个不同的方法,意义分得更明确。这就实践中做取舍了,完全这样感觉不太现实
- 指令与询问分开,要么做一件事,要么返回一件布尔值,只做一件事。太苛刻了,但是如果真的这么严格的话确实可读性变高了
- 不要有重复代码,若有就单独抽取一个函数