如何使代码整洁之有意义的命名

本文详细阐述了代码命名的重要规则,包括名副其实、避免误导、做有意义的区分、使用可读和可搜索的名称、遵循编程语法规则、使用问题领域相关名称、添加和避免不必要的语境。强调了命名在提高代码可读性和维护性中的关键作用,帮助程序员创建清晰、一致的代码风格。

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

我们做大量的命名,给变量、函数、参数类和封包命名,给目录命名,如何做好命名,应该遵循以下几条规则

(1)名副其实,通过名字就可以知道它为什么会存在,它做什么事,该怎么用

下面为参数命名示例,下面的命名要比上面更名副其实

int d; //消逝的时间,以日计


int elapsedTimeInDays;
int daysSinceCreation;
int daysSinceModification;
int fileAgeInDays;

(2)避免误导

如accountList指定一组账户,除非它真的是List类型,List对程序员有特殊意义,如果不是List,就会引起错误的判断

(3)做有意义的区分

比如,你有一个Product类,如果还有ProductInfo,ProductData类,虽然他们名称不同,意思却无区别

(4)使用能读出来的名称

比如,定义一个生成时间戳的函数名为genymdhms(生成年月日时分秒),可读性太差,且不易理解,改为gennerationTimeStamp

(5)使用可搜索的名称

长名称胜于短名称,搜得到的名称胜于自造编码代写就的名称。单字母的名称仅用于短方法中的本地变量。名称长短应与其作用域大小相对应。若变量或常量可能在代码中多处使用,则应赋其以便于搜索的名称。

(6)类名,类名和对象名应该是名词或名词短语,如Customer、WikiPage、Account和AddressParser,避免使用Manager、Processor、Data或Info这样的命名。类名不应是动词

(7)方法名,应该是动词或动词短语,如postPayment、deletePage或save

(8)每个概念应该对应一个词

给没给抽象概念选一个词,并且一词以贯之,例如fetch、retrieve和get来给多个类中同样方法命名,怎么记得住哪个类中是哪个方法呢,同样,在一堆代码中有controller,又有manager,还有driver就会令人困惑

(9)使用解决方案领域名称

只有程序员才会读你的代码,所以,尽管使用计算机科学术语、算法名、模式名、数学术语吧。

(10)使用源自所涉问题领域的名称

如果不能用程序员熟悉的术语命名,则采用所涉问题领域而来的名称吧,至少,负责维护代码的程序员就能去请教领域专家了。

优秀的程序员与设计师,其工作之一就剩分离解决方案领域和问题领域的概念。与所涉问题领域更为贴近的代码,应当采用源自问题领域的名称。

(11)添加有意义的语境

很少有名称是能自我说明的——多数都不能,反之,你需要用有良好命名的类、函数或名称空间来放置名称,给读者提供语境。如果没有这么做,给名称添加前缀就剩最后一招了。

设想你有名为firstName、lastName、street、houseNumber、city、state变量,它们在一起的时候,很明确构成一个地址,不过只是在某个地方看到state变量,还会认为是一个地址的一部分吗

(12)不要添加没用的语境

假设你有一个名为“加油站豪华版”(Gas Station Deluxe)的应用,给其中每个类中添加GSD前缀就没什么用。只要短名称够清楚,就比长名称好。

对于Address类的实例来说,accountAddress和customerAddress都说不错的名称,不过用在类名上就不太好,Address是个好类名。如果需要与MAC地址、端口地址和Web地址区别,我会考虑使用PostalAddress、MAC、URI。这样命名更精确,而精确是命名的要点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DaxiaLeeSuper

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值