工程实践:给函数取一个"好"的名字 - Matrix海子 - 博客园 (cnblogs.com)
我发现,我给函数起名简直就是一个老大难的问题,并不是不知道这个函数是干什么的,就是中文翻译成英文也觉得乖乖的,今天看到一篇博客,里面有好多常用的给函数取名的动词和名词,我决定以后每次给函数取名都看看里面的单词,从中选择与自己写的函数相关的单词.
2)要领2:名词使用领域词汇
举个例子:集合的容量通常用capacity、集合实际元素个数用size、字符串长度用length,这种就遵循大家的使用习惯,不要用size去形如字符串的长度。
再比如,假如使用到建造者模式,那么通常会用build作为函数名字,这个时候就不要另辟蹊径,用create来作为函数名字,使用大家约定俗成的命名习惯更容易让你的代码被别人读懂。
命名函数的技巧
明确函数要做什么
在给函数命名前,明确函数到底要做什么。这有利于给函数命名。
以动词开头
函数总是做些什么,所以当然要以动词开头。
尽量不要以 do 开头
do 并不能给我们提供任何函数的信息。相比之下,search, compute, handle 之类的动词暗示着函数大概做了什么。
返回布尔值的方法以 is 或 are 开头
用 is 还是 are 取决于判断主体是单个还是多个。如:isButtonEnabled
,areButtonsEnable
。
合理的使用 get 作为函数名字的开头
所有有返回值的函数,好像都可以用 get 作为函数名字的开头。但以 get 开头的函数应该表示取某属性,如
var user = {
firstName: '',
lastName: '',
getFirstName: function(){
return this.firstName;
},
getFullName: function(){
return this.firstName + this.lastName;
}
}
否则就不应该用 get 开头。比如,从服务器上获取用户列表,这个方法可以叫 fetchUserList
,而不是 getUserList
;获取某个范围内的所有质数,可以叫 caculatePrime
。
不要包含上下文信息
如有个 user 对象,有个获取 user 的 id 的函数,应该叫 getId
而不是 getUserId
。
不要包含函数参数的信息
如用一个 id 和 token 找用户的方法,应该叫 findUser(userId, token)
而不是 findUserByUserIdAndToken(userId, token)
。如果以 findUserByUserIdAndToken
来命名,那么如果以后函数要支持用其他方式查找用户怎么办,又或是不支持用 token 查找怎么办。
C++取名规范
C++命名规范 - 狂风劲雨 - 博客园 (cnblogs.com)
在软件开发这一高度抽象而且十分复杂的活动中,命名规则的重要性更显得尤为突出。一套定义良好并且完整的、在整个项目中统一使用的命名规范将大大提升源代码的可读性和软件的可维护性。
在引入细节之前,先说明一下命名规范的整体原则:
同一性 | 在编写一个子模块或派生类的时候,要遵循其基类或整体模块的命名风格,保持命名风格在整个模块中的同一性。 |
标识符组成 | 标识符采用英文单词或其组合,应当直观且可以拼读,可望文知意,用词应当准确。 |
最小化长度 && 最大化信息量原则 | 在保持一个标识符意思明确的同时,应当尽量缩短其长度。 |
避免过于相似 | 不要出现仅靠大小写区分的相似的标识符,例如“i”与“I”,“function”与“Function”等等。 |
避免在不同级别的作用域中重名 | 程序中不要出现名字完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但容易使人误解。 |
正确命名具有互斥意义的标识符 | 用正确的反义词组命名具有互斥意义的标识符,如:"nMinValue"和"nMaxValue","GetName()" 和 "SetName()" .... |
避免名字中出现数字编号 | 尽量避免名字中出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号。这是为了防止程序员偷懒,不肯为命名动脑筋而导致产生无意义的名字(因为用数字编号最省事)。 |
类/结构
除了异常类等个别情况(不希望用户把该类看作一个普通的、正常的类之情况)外,C++类/结构 的命名应该遵循以下准则:
不同于C++类的概念,传统的C结构体只是一种将一组数据捆绑在一起的方式。传统C结构体的命名规则为:
|
函数
|
变量
变量应该是程序中使用最多的标识符了,变量的命名规范可能是一套C++命名准则中最重要的部分:
|
常量
C++中引入了对常量的支持,常量的命名规则如下:
|
枚举、联合、typedef
枚举、联合及typedef语句都是定义新类型的简单手段,它们的命名规则为:
|
宏、枚举值
|