• 21变量名的力量_2


    4. 非正式命名规则

    4.1. 与语言无关的命名规则的指导原则
    • 区分变量名和子程序名——例如 变量名为:variableName,子程序名为:getName()

    • 区分类和对象

      //方案1:通过大写字母开头区分类型和变量
      Widget widget;
      LongerWidget longerWidget;
      //方案2:通过对变量采用更明确的名字区分类型和变量
      Widget aWidget;
      LongerWidget fullEmployeeWidget;
      
    • 标识全局变量——例如:g_runningTotal

    • 标识成员变量——例如:m_isRunning

    • 标识类型声明——可以为类型名增加前缀,例如: t_Color

    • 标识具名常量——可以全部使用大写,如果有可能,用下划线来分割单词,例如:LINES_PER_PAGE_MAX

    • 标识枚举类型的元素——可以全部用大写,或者为类型名增加 e_ 或则 E_ 前缀

    • 在不能保证输入参数只读的语言里标识只读参数——可以为输入参数增加一个 const 前缀

    • 格式化命名以提高可读性——用两种常用方法可以用来提高可读性,那就是用大小写和分割符来分割单词。例如 GYMNASTICSPOINTTOTAL 就比 GymnasticsPointTotal 或者 gymnastics_point_total 难读的多

    4.2 与语言相关的命名规则的指导原则
    (1)C 的命名规则
    • c 和 ch 是字符变量
    • i 和 j 是整数下标
    • n 是某物的数量
    • p 是指针
    • s 是字符串
    • 预处理宏全部大写(ALL_CAPS),这通常包括 typedef
    • 变量名和子程序名全部小写 (all_lowercase)
    • 下划线(_)用做分隔符: letters_in_lowercase 要比 lettersinlowercase 更具可读性
    (2)C++ 的命名规格
    • i 和 j 是整数下标

    • p 是指针

    • 常量、typedef 和预处理宏全部大写(ALL_CAPS)

    • 类和其他类型的名字混合大小写(MixedUpperAndLowerCase)

    • 变量名和函数名中的第一个单词小写,后续每个单词的首字母大写——例如:gymnasticsPointTotal

    • 不把下划线用做名字中的分隔符,除非用于全部大写的名字以及特定的前缀中(例如标识全局变量的前缀)

      与 C 编程相比,上述规则还远远没有形成标准,并且不同的环境也会形成不同的具体规则

    (3)Java 的命名规则

    ​ 与 C 和 C++ 不同,Java 语言的风格约定从一开始就创建好了。

    • i 和 j 是整数下标
    • 常量全部大写(ALL_CAPS)并用下划线分割
    • 类名和接口名中每个单词的首字母均大写,包括第一个单次——例如, ClassOrInterfaceName
    • 变量名和方法名中第一个单次的首字母小写,后续单次的首字母大写——例如, VariableOrRoutineName
    • 除用于全部大写的字母之外,不使用下划线作为名字中的分隔符
    • 访问器子程序使用 get 和 set 前缀
    4.3 混合语言编程的注意事项

    ​ 在混合语言环境中编程时,可以对命名规则(以及格式规则、文档规则等)做出优化以提高整体的一致性和可读性。

    4.4 命名规则示例

    ​ 变量名一般包含了以下三类信息:

    • 变量的内容(它代表什么)

    • 数据的种类(具名常量、简单变量、用户自定义类型或者类)

    • 变量的作用域(私有的、类的、包的或者全局作用域)

    (1)C++ 和 Java 的命名规则

    ClassName 							类名混合使用大小写,首字母大写
    TypeName							类型定义,包括枚举类型和 typede,混合使用大小写,首字母大写
    EnumeratedTypes						 除遵循上述规则以外,枚举类型总以复数形式表示
    localVariable						局部变量混合使用大小写,首字母小写。其名字应该与底层数据类型无									   关,而且应该反映该变量所代表的事物
    routineParameter					子程序参数的格式与局部变量相同
    routineName()						子程序名混合使用大小写(建议首字母小写)
    m_classVariable						对类的多个子程序可见(且只对该类可见)的成员变量用 m_ 前缀
    g_globalVariable					全局变量名用 g_ 前缀
    CONSTANT						    具名常量全部大写
    MACRO							    宏全部大写
    Base_EnumeratedType				     枚举类型名用能够反映其基础类型的、单数形式的前缀——例										   如,Color_Red, Color_Blue
    

    (2)C 的命名规则

    TypeName						    类型名混合使用大小写,首字母大写
    GlobalRoutineName()					 公用子程序名混合使用大小写
    f_FileRoutineName()					 单一模块(文件)私用的子程序名用 f_ 前缀
    Localvariable						局部变量混合使用大小写。其名字应该与底层数据类型无关,而且应
    								    该变量所代表的事物
    RoutineParameter					子程序参数的格式与局部变量相同		
    f_FileStaticVariable				 模块(文件)变量名用 f_ 前缀
    G_GLOBAL_GlobalVariable				 全局变量名义 G_ 前缀和一个能反映定义该变量的模块(文件)的、全									 部大写的名字的开始——例如, G_SCREEN_Dimensions
    LOCAL_CONSTANT						单一子程序或者模块(文件)私用的具名常量全部大写,例如, 									   POWS_MAX
    G_GLOBALCONSTANT					全局具名常量全部大写,并且以 G_ 前缀和一个能反映定义该具名常量									的模块(文件)的、全部大写的名字开始, 如 G_SCREEN_ROWS_MAX	
    LOCALMACRO()						单一程序或者模块(文件)私用的宏定义全部用大写
    G_GLOBAL_MACRO()					全局宏定义全部大写,并且以 G_ 前缀和一个能反映定义该宏的模块								  (文件)的全部大写名字开始——例如, G_SCREEN_LOCATION()
    

    5. 标准前缀

    ​ 对具有通用含义的前缀标准化,为数据命名提供了一种简洁、一致并且可读性好的方法。

    5.1 用户自定义类型缩写
    用户自定义类型(UDT)缩写可以标识被命名对象或变量的数据类型。UDT 缩写可以被用于表示像窗体、屏幕区域以及字体一类的尸体。UDT 缩写通常不会表示任何由编程语言所提供的预置数据类型。
    
    5.2 语义前缀

    ​ 语义前缀比 UDT 更近一步,它描述了变量或者对象如何使用的。

    5.3 标准前缀的优点

    6. 创建具备可读性的短名字

    6.1 缩写的一般指导原则
    • 使用标准的缩写(列在字典中的那些常见缩写)
    • 去掉所有非前置元音。(computer 变成 cmptr,screen 变成 scrn, apple 变成 appl, integer 变成 intgr)
    • 去掉虚词 and、or、the 等
    • 使用每个单词的第一个或前几个字母
    • 统一地在每个单词的第一、第二或者第三(选择最合适的一个)字母后面截断
    • 保留每个单词的第一个和最后一个字母
    • 使用名字中的每一个重要单词,最多不超过三个
    • 去除无用后缀——ing、ed 等
    • 保留每个音节中最引人注意的发音
    • 确保不要改变变量的含义
    • 反复使用上述技术,直到你把每个变量名的长度缩减到了 8 到 20 个字符,或者达到你所用的编程语言对变量名的限制字符数。
    6.2 语音缩写

    ​ 有些人倡导基于单词发音而不是拼写来创建缩写、于是 skating 就变成了sk8ing, highlight 就变成了 hilite, before 变成了 b4, execute 变成了 xqt , to 变成了 2。

    6.3 有关缩写的评论

    ​ 在创建缩写时,需要避免以下陷阱。

    • 不要用从每个单词中删除一个字符的方式来缩写
    • 应该一直使用相同的缩写。例如,要么全用 Num, 要么全用 No, 不要两个都用
    • 创建你能读出来的名字。 用 xPos 而不用 xPstn
    • 避免使用容易看错或者读错的字符组合
    • 使用辞典来解决命名冲突
    • 在代码里使用缩写对照表解释极短的名字的含义
    • 在一份项目级的“标准缩写”文档中说明所有的缩写
    • 记着,名字对于代码读者的意义要比对作者更重要

    7. 应该避免的名字

    • 避免使用令人误解的名字或缩写
    • 避免使用具有相似含义的名字
    • 避免使用具有不同含义但却有相似名字的变量
    • 避免在名字中使用数字
    • 避免在名字中拼错单次
    • 避免使用英语中常常拼错的单词
    • 不要仅靠大小写来区分变量名
    • 避免使用多种自然语言
    • 避免使用标准类型、变量和子程序的名字
    • 不要使用与变量名含义完全无关的名字
    • 避免在名字中包含易混淆的字符
    
    
  • 相关阅读:
    【DUBBO】dubbo架构详解(转载)
    【数据库】sql连表查询
    第十三章 三种非对称加密算法总结
    第十二章 非对称加密算法-RSA
    第十一章 非对称加密算法--DH
    第十章 五种对称加密算法总结
    第九章 对称加密算法--IDEA
    第八章 对称加密算法--AES
    第七章 对称加密算法--DES
    第六章 三大消息摘要算法总结
  • 原文地址:https://www.cnblogs.com/rock-cc/p/13305304.html
Copyright © 2020-2023  润新知