命名
1、见名知意 变量命名应知道这个变量作用
函数
2、函数参数:标识参数:boolean;应拆分两个函数:一个函数应只做一件事
3、函数不返回null及参数不传递null
4、永不被调用的函数应该被舍弃。
别害怕删除死函数,git还会记得
5、尽可能找到并消除重复代码:重复的代码可能成为子程序或一个类。
6、if条件过多时,if(xx && xx && xx || xx) => if (xx(xxx)) 将条件抽离为函数。原判断if时需要根据上下文
全局
6、switch:
1)、尽量避免过多的switch及if/else 每个函数应该只关注自身职责;或者使用反射消除多余的if/else
2)、将switch语句封装:如果switch是必须的,将其封装再一个函数或方法中
3)、尽量使用多态来实现switch
7、编写代码应符合最小惊异原则:
1)、方法和类的命名、参数的顺序和类型,以及返回值的类型应该符合用户的直观预期
2)、系统发生错误时,错误消息应该清晰明了
3)、如果系统有一些默认的行为,这些默认行为应该是用户最有可能期望的
8、类和对象:德墨忒耳律:避免A调用B B调用C时,A不应该了解C的信息,比如A调用B.getC().getxxx();
9、注释C
1)、尽可能用代码阐述注释
2)、注释可以编写对意图的阐述
3)、警示
4)、todo
5)、不能喃喃自语
6)、多余与废话注释应移除
10、并发
1)、限制数据作用域
2)、使用数据副本
3)、尽可能减少同步区域
4)、线程尽可能独立
11、测试
1)、别略过小测试
2)、测试边界条件
3)、如果某个函数发现一个缺陷时,最好全面测试那个函数。
4)、测试应该快速