代码整洁之道读书笔记——第二章:有意义的命名

第二章 有意义的命名

2.1 介绍

在软件开发中,我们各种命名,不断的命名,有这么多的命名,一定要做好它!

2.2 名副其实

选个好名字要花很多时间,而且对于我们中国的程序员来说,选一个好的英文名字更要精挑细选,但是省下来的时间远比花掉的多,一个名称基本就答复了你所有的大问题,如果名称需要注释来补充,那就不算名副其实!

书中通过一个变量、一个简单的包含一个for循环的方法,说明了名副其实的命名比胡乱随意命名强一百倍!!!

2.3 避免误导

避免使用与本意相悖的词

别用xxxList来命名一个不是List类型的变量

提防使用不同之处较小的名称,比如两个变量都挺长,但是它们只有一个词不同,那这样可读性很差。我说一个我经历的最具代表性的例子,接口反的图片的字段名,高清和缩略分别为picurl和picurls,那么稍有不注意就写错了,那么后果可想而知,有的列表项需要展示缩略图,你写成了高清图,加载超级慢

注意小写字母l和大写字母O的使用

2.4 做有意义的区分

不要在变量后面加个数字来区分它们的不同,这跟直接使用12345有啥区别

Info、Data,是意义含混的废话

Name、NameString,Name难道能变成浮点数不成

Customer和CustomerObject区别何在

下面这三个方法,你说到底调用哪个:

getActiveAccount();
getActiveAccounts();
getActiveAccountInfo();

要区分名称,就要以读者能鉴别不同之处的方式来区分

2.5 使用读得出来的名称

如果使用那些读不出来的乱七八糟的名称,你们在讨论的时候就像个傻鸟,叽叽喳喳的,真的特别的搞笑,我觉得还是尽量避免使用自己造的那些缩略的词,真的让人看不懂

2.6 使用可搜索的名称

其实我们经常会用到搜索功能去搜一些变量、方法、类,所以定义一个可搜索的名称很重要,如果定义个e,一搜索好几百个e,等你找出来你定义的e变量,花儿都谢了!!!

2.7 避免使用编码

把类型或者作用域编进名称里面,只会增加了解码的负担

2.7.1 匈牙利语标记法

不需要我们通过命名来记住此变量是哪种类型。。。

2.7.2 成员前缀

现在在开发的时候,大部分的项目成员变量要求用m打头,其实是不需要的,因为我们使用的编译环境,会明确的标示出成员变量的颜色,比如我的就显示的是紫色的,而且JakeWharton大神也吐槽不用m打头来命名成员变量,所以我想,从今天起,我也不想用m打头了。其实想想前缀确实也没啥用,用书中的话来说:人们会很快无视前缀。最终,前缀变作了不入法眼的废料,变作了旧代码的标志物。

2.7.3 接口和实现

作者并不喜欢接口命名前加I,如果接口和实现非得编码一个,他宁肯在实现写Imp来

其实这个也是说不好,我们项目现在是接口前加I,实现后加Impl,是不是非常丑陋,哈哈,这个也真是说不清道不明,各有各的看法,我也有点纠结,真是不知道该怎么用,目前还是接口加I,实现加Impl

2.8 避免思维映射

不应当让读者在脑中把你的名称翻译为它们熟知的名称,编写其他人能理解的代码

比如你将网址url命名为r,那就有点让别人看不懂了

2.9 类名

类名应该是名词或名词短语,类名不应当是动词。

作者说避免使用Manager、Processor、Data、Info这样的类名。。。但是我们的项目中充斥着这样的类名。。。

2.10 方法名

方法名应该是动词短语,比如post、delete、save等,属性访问可以用get、set、is

可以考虑用静态工厂来创建对象,将构造器设为private,强制使用这种手段

2.11 别扮可爱

不要耍宝,用一些奇奇怪怪的名字来命名,正常命名最好不过了

2.12 每一个概念对应一个词

这个我们可以这样理解,比如说提交,有时候叫commit,有时候叫submit,都是个提交的意思,但是还是尽量统一,只用一个就好

2.13 别用双关语

比如多种场景都使用add方法,那么这个add到底是什么意思,可以考虑区分开来,比如使用insert,append等

2.14 使用解决方案领域名称

只有程序员才会阅读代码,所以,尽量使用和计算机科学有关的术语

2.15 使用源自所涉问题领域的名称

使用此问题领域的名称来命名

2.16 添加有意义的语境

如果你不把一些类似name,count,number等变量放到一个类中,比如在某一个方法里,根本不知道他们是干什么的,所以可以根据实际情况添加语境,比如orgName,机构名称,userName,用户名称

2.17 不要添加没用的语境

比如你的项目缩写就叫VgMap,完后你在每一个类前都加一个VgMap?,当然没人这么做,只不过夸张一下,不要再命名的时候加没用的语境

2.18 最后的话

取名真的挺难,需要良好的描述技巧和共有文化背景,很多人都没能学会做的很好

总结

命名真的很重要,有很多时候,比如,有的人会把保存视频url的List类型的变量命名为video,这只是一个简单的例子,我只想说,命名真的真的很重要!!!

猜你喜欢

转载自blog.csdn.net/pengbo6665631/article/details/84076913
今日推荐