概述
1、本文档的内容首要来源于书本《代码整齐之道》作者Robert C.Martin,归于读书笔记。
2、软件质量,不只依赖于架构和项目办理,并且与代码质量严密相关,本书提出一种,代码质量与整齐成正比的观念,并给出了一系列卓有成效的整齐代码操作实践,只需遵从这些规矩,就可以编写出整齐的代码,然后提高代码质量。
3、该书介绍的规矩均来自于作者多年的实践经验,包括从命名到重构的多个编程方面,具有很好的学习和学习价值。
4、习艺要有二:知和行。你应当学习有关规矩、形式和实践的常识,尽头应知之事,并且对其一目了然,经过吃苦实践把握它!
前语
学习整齐代码很难,它不止于要求你把握准则和形式,你还得在上面下功夫,并自行实践,体会失利。你须调查他人怎么实践与失利,怎样踉跄学步,再回头学习他们的路数,。
本书要求你多用信息,多刻苦,并且十分刻苦。怎么刻苦?-很多阅览代码,并揣摩代码好在什么当地,坏在什么当地。
本书大约分为三部分:准则、形式和实践。
一、 运用有含义的命名
1、当之无愧
留意命名,一旦发现有更好的称号就换掉旧的,这么做阅览的人会更高兴
称号自身应该能解说其含义,无需注释就能看懂是最佳。比方
int d;//消失时刻,以日计
int elapsedTimeInDays;
前者称号没有任何含义,在程序中运用时看不出这个变量的实践作用,需求对应注释才干看懂,因而远不如后者的称号好!
2、防止误导
程序员有必要防止留下掩藏代码原意的过错头绪,防止运用与原意相悖的词。
防范运用细节之处不同较小的称号
运用相同的拼写办法,前后拼写不共同(巨细写不同),便是误导。在运用修改器称号主动补全功用时,拼写附近的变量简单引起误选。
防止运用小写字母l和大写字母O作为变量称号,易与1和0混杂
3、做有含义的区别
防止以数字系列命名,其无法供给正确的信息和导向作者意图的头绪。
不要运用含义附近的称号,比方ProductInfo和ProductData变量不同,意思相同,简单引起含义混杂
不要运用冗余信息,比方NameString,莫非Name会是一个浮点数吗?假如是,就不该运用Name命名。
4、运用读的出来的称号
人类长于回忆和运用单词,假如称号无法阅览或许发音,就不是一个好称号,评论和沟通时也难以表达。
比方函数称号为:genymdhms()//生成日期,年月日时分秒。
不要运用傻呵呵的自造词,而要运用恰当的英语单词
5、运用可查找的称号
比方字母e,f等就不是一个好的变量名,其是英文常用字母,不方便查找,
单字母称号仅限于本地局部变量运用,称号长短应该与作用域巨细相对应
假如程序中多出运用相同数字,完成相同功用,则需求运用宏界说变量替代。
比方WORK_DAYS_PER_WEEK就比数字5好查找,也更能表现作者意图
6、防止运用编码
无需把类型和作用域编进称号,这样只会自找麻烦,既不方便发音,也简单拼错,对解决问题毫无协助。
匈牙利标记法,破坏了不编码的规矩,不该该选用。
也不用运用成员前缀,应该把类和函数做的满足小,一起运用可以高亮和色彩标出成员的修改环境。(Keil,notepad++都支撑)。
7、防止思想映射
不该当让读者把你脑中的称号翻译成他们熟知的称号,这个问题常见于挑选运用问题范畴的术语仍是解决方案范畴的术语时。
在作为局部变量时,并且称号没有抵触时,可以选用i,j,k作为循环变量。
专业程序员善用其能,编写能让他人了解的代码
8、类名
类名应该是称号或许名词短语,例如Customer、Account,防止运用Manager、Data、Info这样的类名,其不该该是动词。
9、办法名
办法名应该是动词或许动词短语,比方postPayment、deletePage或s**e,特点拜访应该加上set、get、is前缀
10、每个概念对应一个词
给每个抽象概念选用一个词,并且一以贯之。比方运用fetch、retrieve、get在多个类的中同种办法命名,就简单引起混杂。
11、别用双关语
防止将以此用于不同意图,同一术语用于不同概念便是双关语了。
比方多个类中都有add办法,该办法经过添加或许链接两个现存值来取得新值,假如一个新类的含义是,把单个参数放到群集(collection)中,运用add称号,尽管坚持了称号共同,你是含义却不同,应该运用insert才对。
12、运用解决方案范畴的称号
由于只要程序员才会读取你的代码,因而称号应该挑选解决方案范畴的称号,而不是问题规划范畴的称号。比方称号AccountVisitor就比JobQueue赋有含义。
13、运用源自所触及问题范畴的称号
当不能运用程序员所了解的术语命名时,就应该选用所触及问题范畴的称号
与所涉问题范畴愈加靠近的代码,应当选用源自问题范畴的称号
14、添加有含义的语境
很少有称号可以自我阐明-大都都不能,因而需求运用杰出命名的类、函数来放置称号,给读者供给语境。
比方添加前缀addrFirstName、addrLastName、addrState,就可以供给语境,这些变量归于地址规模。更好的做法是,创立一个称号为Address的类,来寄存这些相关变量。
语境的增强也让算法可以经过分解为更小的函数而变得干净利索。
15、不要添加没有含义的语境
比方运用(Gas Station Deluxe)简称为GSD,因而为每个函数、类、变量添加相同的前缀就GSD命名就不是一个好点子。
Address是个好称号,可是假如需求与MAC地址、端口地址或Web地址区别,应当运用PostalAddress、MAC、URI,这样的称号更为准确。
16、总结
取名字最难当地在于需求杰出的描绘技巧和共有的文化背景
试试上面的规矩,看你的代码的可读性是否有所提高。假如保护他人的代码,运用重构东西来解决问题,作用也好马到成功,并且会继续下去。