What?
Why?
命名一致性很重要
在同个项目或同个公司中,同个对象的命名最好一致,方便理解,避免同个名称在不同地方含义不同,或同个含义在不同地方有不同名称
让代码易于新读者理解更重要
- 使用的缩写一定要满足上一个一致性条件,不要用只有一个人能理解的缩写, 也不要通过砍掉几个字母来缩写单词,随意缩写严重降低了代码的可阅读性
- 采用有意义的命名(meaningful names)。变量的名字必须准确反映它的含义和内容
- 遵循当前语言的变量命名规则
- 不要对不同使用目的的变量使用同一个变量名
- 不要使用拼音
How?
一些特定的广为人知的缩写
- 例如用 i 表示迭代变量
- T 表示模板参数
已有的命名规范
- 下划线命名法
- 全小写
- 每个逻辑分割点用下划线来标记
- 例如:test_underline
- 骆驼命名法 lowerCamelCase
- 每一个逻辑分割点都有一个大写字母来标记
- 首字母小写
- 例如: testCamel
- 帕斯卡命名法
- 与骆驼命名法类似,只不过帕斯卡命名法是首字母大写
- 例如: TestPascal
- 匈牙利命名法
- 以一个或者多个小写字母开头作为前缀,该字母要指明用途
- dotNet编程环境使用较多
文件命
- 文件名要全部小写
- 可以包含下划线 (_) 或连字符 (-)
- “_” 更好
类命名
- 名词+名词
- 采用
帕斯卡命名法
- 抽象类命名使用 Abstract 或 Base 开头
- 异常类命名使用 Exception 结尾
- 测试类命名以它要测试的类的名称开始,以 Test 结尾,但不能以Test开头,否则有动词开头的嫌疑
- 将设计模式体现在名字中,有利于阅读者快速理解架构设计思想。正例: class OrderFactory; class LoginProxy;
常量命名
- 形容词/名词+名词 名词短语
- 所有单词的字母都是大写
- 使用下划线链接
- 类型常量
- 单个XX_TYPE
- 多个XX_TYPE_XX
变量命名
- 形容词/名词+名词 名词短语
- 成员变量
- python 采用
下划线命名法
- java 采用
骆驼命名法
- python 采用
- 后缀名词为主要含义
- 如:xx_id user_id
- 如:xx_name user_name 名称后缀
- 如:xx_count login_count 数量后缀
- 如: xx_amt loan_amt 金额后缀
- 如:xx_type login_type 类型后缀
- 如:xx_date 日期后缀
- 如:xx_time 时间后缀
- 如果变量为对象
- 要么直接将对象名用下划线风格改写为变量名
- 如果需要定义同个对象的多个变量,则加前缀以示区别
- 如:user 这里只有后缀已经能够表达清晰
- 如:sys_user 这里必须加前缀才能把意思表达清晰
- 如果变量为集合类型,则后缀为具体的集合类型名称
- 如:xx_list
- 如:xx_array
- 如:xx_map
- 如:xx_set
- 如:xx_dict
- 如:xx_json
函数命名
- 动词+名词
- python 采用
下划线命名法
- java 采用
骆驼命名法
- python 采用
- 前缀动词表达动作清晰
- 如:add_xxx 增加
- 如:cal_xxx 计算
- 如:get_xxx 获取
- 如:query_xxx search_xxx 查询
- 如:check_xxx if_xxx 判断
参考
- https://github.com/unbug/codelf/wiki
- https://google.github.io/styleguide/pyguide.html
- https://www.zhihu.com/question/21440067