LeBlanc's law : later equal s never.
把《clean code》的第二章读完了,谈谈感想,第一次完完整整的看英文书籍,可能有些地方理解的有问题。
我一直觉得写给变量,函数,取个有意义的名字很重要,其实里面的很多法则还是知道的,奈何一个是自己熟知的范围有限,一个是自己的英文水平实在是不好。所以总是找不到可以让自己很满意的名字。把第二章的几条取名字规则总结一下吧:
1. 取个能够反映你意图的名字(Use Intention-Revealing Names)
这个还是比较好理解的,变量名称还反映它的作用,这样读起来一下就知道这个变量是干嘛的了,不会每次读代码的时候就要回过头去看它的注释或者看它的定义,一般不要用什么a,b,c,d当作变量,变量名称长点没关系,现在的编译系统基本上都有自动补全功能。
2. 避免误导(Avoid Disinformation)
应该尽量避免使用和代码本意不相符的词,和第一条规则有点像。用同样的规则写出同样的概念才是information,拼写前后不一致就是disinformation.
3. 做有意义的区分(Make Meaningful Distinctions)
一个规则,如果名称必须相异,那其意思也应该不同才行,用数字系列命名的名称没有提供正确的信息,也没有提供编码者意图的线索。
废话(Nose words)也是没有意义的区分,productInfo和productData类,名字有差别,其实意义是一样的。还不如直接用product。
4. 使用读得出来的名称(Use Pronounceable Names)
使用读得出来的名字可以使得你在和别人讨论的时候可以让别人明白你的意思,便于讨论和交流。
5. 使用可搜索的名字(Use Searchable Names)
使得你的名字应该是独特的,在代码中单字母的名字和数字变量是很难在代码中找出来的。因此给数字变量定义一个名字还是还有必要的,这样便于搜索,比如最大值10, 用MAX当然会比10来的好。便于搜索。
6. 避免使用编码(Avoid Encodings)
我原来之前用的都是用匈牙利编码,对于每个变量名字之前都要表明它的类型,不过现在完全没有必要了,现在只要你把鼠标放上去,之前这个变量的类型就出来了,用了表示类型的变量后,在之后改变变量的类型的时候,如果不改变变量名称的话将会导致误解。
还有前缀的使用,变量用m_这种前缀,现在完全没有必要用前缀了。
接口和实现,我觉得这个看个人喜好吧,我也没觉得前面加I作为接口标识有什么不好,个人喜好。
7. 避免思维映射(Avoid Mental Mapping)
在多数情况下,单字母名称不是好的选择,clarity is king.明确才是王道。这个和下面的13和14点差不多。
8. 类名(Class Names)
类名和对象名应该是名词或者是名词短语,比如用Customer, WikiPage, Account, and AddressParser会比Manager, Processor, Data, Info 要好。类名不应该是动词。
9. 方法名(Method Names)
方法名应该是动词或者动词短语,用get,set和is等等前缀,而且前缀最好统一,不要一下用get,一下用fetch的。
下面这个有点不太懂:
用Complex fulcrumPoint = Complex.FromRealNumber(23.0)为什么好于 Complex fulcrumPoint = new Complex(23.0);
有大神可以帮忙解释下,我个人还是喜欢直接用重载构造函数。
10. 别装可爱(Don't Be Cute)
这个就很明显了,用些可爱的词,只有自己懂,别人看不懂。
11. 一词一意(Pick One Word per Concept)
每个概念对应一个词,就像用get就用get,就不要一下用get,一下用fetch。
12. 别用双关语(Don't Pun)
双关语模糊概念。
13. 使用解决方案领域名字(Use Solution Domain Names)
用专业的词语,毕竟看代码的人也是专业领域的人。
14. 使用涉及问题领域的名字(Use Problem Domain Names)
如果实在不能用解决方案领域的名字,就用这个问题领域的词,看代码的人可以去问这方面的专家。
15. 添加有意义的语境(Add Meaningfu Context)
添加一些前缀给一些变量,使得变得有语境,比如address里面有state,city等等。单独用state,肯定不明确。所以在前面加个addrState可以使得这个语句更有含义。
16. 别添加没有用的语境(Don't Add Gratuitous Context)
有些没必要添加前缀的就不要添加。
个人感觉,这个东西其实不是太难,不过是看起来不是太难,做起来还是比较困难的,这些规则我都知道,不过有时候实在是想不出一个好名字来,这个可能还是需要一些磨练,反正我做的不能收发由心,有时候想着想着就词穷了,现在在苦逼的写英语。
给自己加加油!!!加油!!!!
You have to believe in yourself.That's the secret of success.