宋式编程命名风格

What?

Why?

命名一致性很重要

在同个项目或同个公司中,同个对象的命名最好一致,方便理解,避免同个名称在不同地方含义不同,或同个含义在不同地方有不同名称

让代码易于新读者理解更重要

  1. 使用的缩写一定要满足上一个一致性条件,不要用只有一个人能理解的缩写, 也不要通过砍掉几个字母来缩写单词,随意缩写严重降低了代码的可阅读性
  2. 采用有意义的命名(meaningful names)。变量的名字必须准确反映它的含义和内容
  3. 遵循当前语言的变量命名规则
  4. 不要对不同使用目的的变量使用同一个变量名
  5. 不要使用拼音

How?

一些特定的广为人知的缩写

  • 例如用 i 表示迭代变量
  • T 表示模板参数

已有的命名规范

  1. 下划线命名法
    • 全小写
    • 每个逻辑分割点用下划线来标记
    • 例如:test_underline
  2. 骆驼命名法 lowerCamelCase
    1. 每一个逻辑分割点都有一个大写字母来标记
    2. 首字母小写
    3. 例如: testCamel
  3. 帕斯卡命名法
    1. 与骆驼命名法类似,只不过帕斯卡命名法是首字母大写
    2. 例如: TestPascal
  4. 匈牙利命名法
    1. 以一个或者多个小写字母开头作为前缀,该字母要指明用途
    2. dotNet编程环境使用较多

文件命

  • 文件名要全部小写
  • 可以包含下划线 (_) 或连字符 (-)
  • “_” 更好

类命名

  • 名词+名词
  • 采用 帕斯卡命名法
  • 抽象类命名使用 Abstract 或 Base 开头
  • 异常类命名使用 Exception 结尾
  • 测试类命名以它要测试的类的名称开始,以 Test 结尾,但不能以Test开头,否则有动词开头的嫌疑
  • 将设计模式体现在名字中,有利于阅读者快速理解架构设计思想。正例: class OrderFactory; class LoginProxy;

常量命名

  • 形容词/名词+名词 名词短语
  • 所有单词的字母都是大写
  • 使用下划线链接
  • 类型常量
    • 单个XX_TYPE
    • 多个XX_TYPE_XX

变量命名

  • 形容词/名词+名词 名词短语
  • 成员变量
    • python 采用下划线命名法
    • java 采用骆驼命名法
  • 后缀名词为主要含义
    • 如: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 采用骆驼命名法
  • 前缀动词表达动作清晰
    • 如: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
Juforg wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!