博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件开发命名指南
阅读量:6684 次
发布时间:2019-06-25

本文共 2169 字,大约阅读时间需要 7 分钟。

摘译自 (by Sagi Rabinovich@Medium)

代码是写给人看的,好的命名对提高代码的可读性至关重要。

命名是一门艺术,需要有良好的描述技巧,有些人天生具备这种能力,而大多数人需要为之奋斗。

使用有意义的名字

  • 选择能够揭示意图的名字。例如,定义一个变量用来表示“上次更新的记录”,应当将它命名为 lastUpdatedRecord,而不是 recordlastRecord(某个文件中的最后一条记录??)。

  • 做有意义的区分。不要通过故意的拼写错误、数字后缀或噪音词后缀来区分相似的名字。例如,ProductData vs ProductInfoProductInfo 包含了什么 ProductData 不包含的信息吗?DataInfo 就是噪音词,以它们为后缀来区分不同的名字是没有意义的。

  • 增加有意义的上下文。变量 state 自身没有明确的意义,但是把它放到一个意义明确的类里面,别人很容易就能明白你的意图。例如 address.stateengine.state

    最不济但也正确的做法,是将上下文作为名字的前缀或后缀,例如 addressState

    调用链中的每一个部分都应当只增加新的上下文,这样可以缩短名字,同时保持其意义明确。

  • 使用解决方案域中的名字。代码会被程序员阅读,所以可以并且应该使用计算机科学术语、模式名、算法名、数学术语等。

  • 使用问题域中的名字。如果要表达的内容与问题域联系更为紧密,那么问题域中可能有合适的名字可用。使用问题域中的名字有助于更好的了解问题域,与客户拥有共同语言,并且可以解耦问题域的概念和特定解决方案。你可以使用 string address 定义一个来表达“送货地址”的变量,但是使用 Address shippingAddress 更加明确和健壮。

    // instead ofString stateString streetAddressInt houseNumber// useAddress address复制代码
  • 不要使用缩写。使用 getWindow 而不是 getWin

概念

命名与概念的抽象和封装行为有关。

  • 为每一个抽象概念挑选唯一的名字 并坚持使用它。让团队成员在表达同一个概念时使用相同的名字。

  • 不要使用 双关语,不要为不同的事物使用相同的名字。例如,有两个类,一个类使用 add() 方法创建并添加用户,另一个类有一个方法用来往集合中插入一个参数,为每一个抽象概念挑选一个名字 这一原则可能会误导你为两个方法取同样的名字 add(),事实上两个方法有不同的语义。

  • 避免意象映射(mental mapping)。这一点非常重要。不要让读者将名字理解为他们知道的其他东西。甚至应该为循环计数器命名,使其更容易理解。不要做一个炫耀智力的聪明程序员,要做一个清晰为王的专业程序员。

  • 为通用操作约定统一的名字。例如,如何获取对象的 Id ?

    worker.getId()candidate.id()employee.id.get()supervisor()复制代码
  • 使用精确的对立词。如果你可以 open(),你应该也可以 close(),如果你可以 start(),你应该也可以 stop()

噪音和样板

命名应该尽可能的干净和短小。噪音让读者阅读更多的内容却没有产生任何好处,而是带来困惑。

  • 不要制造噪音。你的 ProductInfo 什么意思?它与 ProductData 有何不同?类似这样的后缀就是噪音。

  • 避免注释。好的命名远胜于注释。

  • 当心 I 开头的命名(接口陷阱)。不要通过给具体类添加一个前缀 I 的方式来获得一个接口类。IDollar 不是一个比 Currency 好的名字。Carlo Pescio 在其博文 中详细阐述了这一观点。

  • 不要增加不必要的上下文。例如,不要把项目名的缩写作为前缀,这会影响 IDE 的自动补全功能,并且难以在其他项目中复用。

虚假信息

  • 避免使用与要表达的含义之外的含义过于相关的词和缩写词

    避免在名字中使用数据类型,例如 accountList,或许有一天有人会将数据结构改为使用 hashSet,这个名字将失去意义,如果使用 accounts 就不会有这个问题。

  • 避免在长名字中间插入有细微的差别的词。例如,使用 ol,它们与 01 太过相似。

  • 避免注释。经常会出现代码变了,注释却没有更新的情况。

人类读者

  • 名字要有 必要的长度 以表达精确的含义,但是应当 尽可能短 以增加可读性。

  • 可读性胜过简洁性CanScrollHorizontallyScrollableX 好。

  • 使代码像 段落和句子 一样可读,并尽可能正确地使用语法。

  • 使用 读得出来的名字,必须你能在听起来不像白痴的情况下讨论它。例如,如果变量名为 plhmbuster,你如何与别人讨论它。

  • 不要可爱或聪明。对于一个有趣的名字,只有当知情人还在项目团队中的时候,它才是可理解的。

  • 使用可搜索的名字 以便 IDE 能够帮到你。例如,用常量表示魔数。

  • 避免发音相似的名字

  • 避免容易拼错的名字

转载于:https://juejin.im/post/5ca0d61c6fb9a05e505c47f7

你可能感兴趣的文章
在结构体内定义宏
查看>>
TURBOGATE邮件网关——最经济高效的企业网关选择
查看>>
MS14-058 最新提权神器
查看>>
数据挖掘算法(Analysis Services – 数据挖掘)
查看>>
Apache配置详解(最好的APACHE配置教程)
查看>>
JAVA笔记——String类
查看>>
我的友情链接
查看>>
CentOS 7 下基于基 bitnami 安装部署 redmine
查看>>
DEDE 标签汇总
查看>>
华章1-2月份新书简介(2019年)
查看>>
我的友情链接
查看>>
linux ubuntu apt-get 更换源
查看>>
【Web探索之旅】第二部分第三课:框架和内容管理系统
查看>>
Javascript中公有成员,私有成员,静态成员
查看>>
SHELL脚本练习
查看>>
DB2-内存的使用
查看>>
ZooKeeper安装与配置(Linux --- 转)
查看>>
最新勒索软件病毒防范方法及措施
查看>>
NIO学习系列:缓冲区内部实现机制
查看>>
点击变色
查看>>