文档开发者中心
我的

CleanCode总结系列(1)--有意义的命名原则



1、名副其实

见名知义,如下看到第一个完全不知道啥意思,看到第二个不需要任何解释就知道这个是表示什么含义

d

daysSinceCreation

2、避免误导

     命名与实际含义一致,如下,看到第一个无论如何也想不出它是表示账号的含义,而第二个则与实际含义一致

       accountList

       account

3、做有意义的区分

命名不要出现多个命名类似,让人无法区分的情况,如下两个,产品数据,产品信息,这两个让人无法区分到底有啥区别,至少从字面上无法区分

productData

productInfo

4、使用读得出来的名称

命名具有可读性,不要用一些奇怪的或者将多个简写字母拼在一起,如下,很明显第二个可以直接读出来,而且读出来就知道表示什么含义了,第一个则相反

modymdhms

modificationTimestamp

5、使用可搜索的名字

在代码中使用较多的应使用便于搜索的长点的名称,当然如果只使用一两次的,使用短的命名倒也无所谓,如下,在代码中WORK_DAYS_PER_WEEK明显比数字5要更容易的搜索

const int WORK_DAYS_PER_WEEK=5

6、避免使用编码

说白了就是没必要在命名加一些类型、作用域、前缀等修饰型的描述,多余,如下,不论是前缀i还是int类型修饰符,都是很多余的,age就足够了

i_age

intAge

7、避免思维映射

比如常用i,j,k表示循环计数器,就推出继续使用l也表示循环计数器,或者常用a,b 就推出继续用c

8、类名

类型和对象名应该是名词或者名词短语,避免使用动词

9、方法名

方法名应该是动词或者动词短语,属性的访问、修改和断言应加上get、set和is前缀

10、别扮可爱

尽量避免使用使用俗语、俚语、比喻句等类型,言到意到,意到言到

11、每个概念对应一个词

给每个抽象概念选一个词,并一以贯之,常见的错误用法是比如获取操作一会用get,一会用retrieve,一会又用fetch,一以贯之的含义就是比如对获取,我可以在所有场合下的获取操作都是用get

12、别用双关语

双关语的含义就是同一个单词用于了不同的概念,比如add在某些场合用于加法或者字符拼接,而在某些场合却又用来将一个元素存放到数组,这明显add一个单词存在多种不同的含义了

13、使用解决方案领域名称

通俗点说就是命名尽量用技术性的名称。尽量使用计算机科学术语、算法名、模式名、数学术语等

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

此原则是如果做不到原则13,即做不到采用技术性命名,那就退而求其次,采用领域问题的命名吧

15、添加有意义的语境

此原则是未了可读性,可适当增加一些有语意的语境的前缀,与原则6看似矛盾,实则同一,如果没有意义的前缀依然是不建议加的

16、不要添加没用的语境

没意义的语境添加就没有意义了


点赞
收藏
回复
6
分享
举报
浏览2608 编辑于2019-11-09 04:02未知归属地
全部评论
最多点赞
最新发布
最早发布

很好的总结

6楼回复于2019-11-06 06:12 未知归属地

总结的还是挺全面的,转走了

5楼回复于2019-11-06 06:10 未知归属地

“别扮可爱”,这个说到了点子上

4楼回复于2019-11-06 06:09 未知归属地

很实用,就按这个来命名了

3楼回复于2019-11-06 06:07 未知归属地

多谢分享呀

2楼回复于2019-11-06 05:56 未知归属地

大神,学习了

1楼回复于2019-11-06 05:56 未知归属地
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。