《代码整洁之道》读书笔记----第二章

本文深入探讨了软件开发中命名的重要性和原则,包括名副其实、避免误导、做有意义的区分等15条命名规则,旨在提升代码的可读性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有意义的命名----命名工作伴随着整个编码过程

命名规则:
1、名副其实
通过命名,就可以大概得知变量,方法,类的用途
有更好的命名的时候,要替换掉旧的

2、避免误导
如果命名有掩盖变量,方法,类的本来用途的时候,就要替换掉。
像是accountList,用来指示一组账号。可是List像是在说明这是一个列表类型的账号列表。
可是这组账号不一定是列表类型,只是单纯的想表示,这个变量用来存储一组账号信息。
所以这里比较好的命名是:accountGroup/bunchOfAccount/accounts

不同变量,方法,类的命名不应该在细微处有所不同。
如XXXHandlerRequestOfXXX与XXXHandlerReponseOfXXX,在命名的起始处,就表明不同会好点

3、做有意义的区分
如果只是为了满足编译器的需要而写代码,不同变量之间使用数字或者废话区分是远远不够的
像是a1,a2,…,an。这些命名完全不知道这些变量是用来干什么的。
像是要有一个方法,要把arg1[]的值 复制到arg2[]
public static void Copy(T[] Source,T[] Destination){};
这样的声明方式,一眼就可以看出第一个参数是源数组,第二个参数要接收拷贝的参数。

4、使用读的出来的名称
避免使用多个名词组合在一起的缩写的新创词,因为使用了,再给新的开发者的时候,都要进行说明

5、使用可搜索的名称
数字5可能难于查找,可是WORK_DAYS_PER_WEEK是很好找的,也能体现这个变量的意图。
这是表明尽可能避免使用单字母命名的变量

6、避免使用编码
(1)把类型和作用域体现在名称中----匈牙利语标记法----不要使用
(2)消除命名过程对于前缀的需要,像是m_day,这里的m_。为了更好的表现这个变量的用途
如果是工作日workday,休息日weekend等等。

7、接口与实现类
当一个类中的方法是通过实现接口的,这个方法的命名尽可能的使用贴切实际意义的命名,而不是使用IXXX用来说明这是一个接口方法

8、避免思维映射
在作用域较小的时候,像是在循环计数器中的计数器使用i,j,k是比较常用的做法
在命名的时候,不要把自己认为的当作大众认为的,像是ymd,映射成year_month_day实属没有必要

9、类名与方法名
类名使用名词
方法名使用动词

10、别扮可爱
命名应该直接表示用途
HolyHandGrenade并没有DeleteItems来的更好

11、每个概念对应一个词
给每一个抽象概念一个词,并且这使用这个抽象概念的时候不更换词语
像是管理控制的类,不应该一个地方使用manager,一个地方用controller另一个地方使用driver
如果是管理的类统一使用manager或者统一使用controller后缀会比较合适

12、不要使用相关语
像是在一个collection中加入元素,不应该使用双关语add,这会让人以为是两个值进行相加的方法
使用insert 或者append都会好很多

13、使用解决方案领域中的名称
如果是解决某一领域中的解决方案,不应该使用领域来命名。
使用计算机科学术语,算法名,方法名,数学术语才是合适的。
像是访问者模式中AccountVisitor富有意义。
当然如果不能使用程序员熟悉的术语命名,也可以使用相关领域中涉及的名称

14、添加有意义的语境
firstName、lastName
如果放在Student类中就是人的名字
如果放在Address类中就是地址的名字

15、不要添加没有意义的语境
只要短的名称足够清楚,就比长名称好
Address是一个好的类名
而accountAddress更适合做类变量的名字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值