目录
- 整洁代码介绍
- 有意义的命名
- 函数
- 注释
- 格式
- 对象和数据结构
- 错误处理
一、整洁代码介绍
混乱代码的代价是,修改起来很麻烦,牵一发而动全身,导致生产力下降。然而,重新开发新的框架代价也很大,项目逻辑复杂,很难覆盖齐全,同时新框架也会有新的隐患存在。所以,整洁代码有其必要性。
二、有意义的命名
1、类名、方法名、变量名做到见名知意
2、避免取一些误导人的命名。如accountList,并不是List类型;类似命名不易区分
3、做有意义的区分。如,不取名字母或者数字;Data或者Info;NameString
4、使用读得出来的名称,方便沟通
5、使用可搜索的名称,方便查找
6、避免使用特殊的前缀,m_(容易被无视)或者iShapeFactory(不想让人知道是接口)
7、不要使用单字母,尤其是l与1,O与0
8、类名和对象名应该用名词,不应该用动词
9、方法名应该用动词或动词短语
10、忌用俗语或者俚语,简洁明了最好
11、每个概念对应一个词。如get、fetch;还有controller、manager让人困惑
12、别用双关语,同一术语用于同一概念,如add、insert、append等
13、使用解决方案领域名称,取技术性名称
14、添加有意义的语境,如firstName、lastName、street等代表地址,可命名为addrFirstName、addrLastName、addrStreet,避免某个变量孤零零出现,不知其意
15、不要添加没用的语境,短命称足够清楚,就不要用长名称
一章小结:取好名称最难的地方在于良好的描述技巧和共有文化背景。
三、函数
1、函数尽可能短小
2、一个函数只做一件事
3、每个函数对应一个抽象层级。从顶向下阅读代码,逻辑更清晰
4、switch语句,使用抽象工厂模式,通过多态,将switch藏进去
5、使用描述性的名称,见名知意。函数越短小、功能越集中,越便于取个好名称
6、函数参数最理想参数数量是0,其次是一,再次是二,尽量避免三
7、一个函数承诺只做一件事,避免会做其他被藏起来的事
8、函数要么做某事,要么回答某事,不可二者兼得。如if(set("username", "bob"))...
9、使用异常代替返回错误码;抽离try/catch代码块在最外层,把主体部分抽离出来
10、消除重复代码
11、结构化编程。每个函数代码块只有一个入口和一个出口,但只要函数足够小,可偶尔出现return、break、continue
12、如何写出短小简洁的函数,都是通过很多次打磨代码实现的
一章小结:遵循良好的函数规则,函数就会短小、有个好名字,并被很好的归置。
四、注释
- 别给糟糕的代码加注释
- 如果你发现自己需要写注释,再想想能否用代码表达 1、注释不能美化糟糕的代码,少量注释简洁而有代表力,大量注释只会零散复杂
2、用代码来解释注释
3、好注释--有些注释是必须的,如法律信息、提供信息的注释、对意图的解释、警示、TODO注释、公共API里的JavaDoc
4、坏注释--多余的注释、误导性注释、非公共API的JavaDoc、位置标记、如///////////////、括号后的注释、归属与签名、注释掉的代码、HTML注释、信息过多