第三章 编码风格
注释
总结起来一句话: 优秀的代码本身就容易阅读,注释只需要提供有用的附加信息
分解
分解(decomposition) 指将代码分为小段.理想情况下,每个函数或方法都应该只完成一个任务.任何非常复的子任务都应该分解为独立的函数或方法.
重构(refactoring) 指重新构建代码的结构.下面是一些可用来重构代码的技术:
- 增强抽象的技术
- 封装字段:将字段设置为私有
- 使类型通用:创建更通用的类型
- 分割代码以使其更合理的技术
- 提取方法:将较大方法的一部分转换为新方法
- 提取类
- 改善代码名称和位置的技巧
- 移动方法或字段
- 重命名方法或字段
- 上移(pull up):移到基类中
- 下移(push down):移到派生类中
命名
C++编译器有几个命名规则:
- 名称不能以数字开头(如:2015class)
- 包含两个下划线的名称作为保留名称,不该使用(如:my__name)
- 以下划线开头跟着大写字母的名称是保留名称,不该使用(如:_Name)
- 全局名称空间中以下划线开头的名称是保留的,不该使用(如:_name)
适当的名称 | 不当的名称 |
---|---|
区分度高的名称: sourceName,destinationName |
笼统的名称 thing1,thing2 |
表明全局身份: g_Settings |
太长: globalUserSpecificSettingsAndPreferences |
表明成员身份: m_nameCounter |
太简单模糊: mNC |
简单明确: calculateMarigoldOffset() |
太宽泛: doAction() |
赏心悦目: mTypeString |
只有计算机喜欢: typeSTR256 |
描述性名称: errorMessage |
非描述性名称: String |
无缩写: sourceFile |
有缩写 srcFile,dstFile |
计数器
通常来说,C风格的计数器喜欢将i与j作为计数器.这是非常危险的行为,特别是考虑嵌套循环时.i与j有时难以区分.
因而,与使用i和j相比,将 row 和 column 作为索引会更容易.
有些程序员也喜欢使用 outerLoopIndex 和 innerLoopIndex 等计数器.
前缀
前缀 | 示例 | 前缀含义 |
---|---|---|
m m_ |
mData m_data |
成员 |
s ms_ |
sLookupTable ms_lookupTable |
静态 |
c c_ |
cMaximumLength c_maximumLength |
常量 |
b_ is |
b_completed isCompleted |
布尔值 |
g_ | g_Settings | 全局 |
匈牙利命名法 :使用更加详细的前缀而不是一个字母表示附加信息
好的名称会传递与用途有关的信息,而不会使代码阅读困难
常量
在一般情况下,应当将常量放到名称空间中去.
在所有情况下都不应该使用常量字面量表示某个常数,这种不经过解释的常量又称"魔数".特别是从C++20开始,标准库包含了一组预定义的数学常量,定义在
在大部分情况下,使用引用代替指针,特别是需要常量的地方.
命名风格
-
匈牙利命名法 :匈牙利命名法是早期的规范,主要在IDE还不智能的时期,将对象的数据类型与相关信息缩写作为前缀方便阅读.
- 例如
i:int c:char f:float str:string b:bool by:byte a:array w:word dw:double word
fn:function l:long n:short p:pointer lp:long pointer sz:string with zero - 匈牙利命名法:cMyName,iMyAge
- 例如
-
驼峰命名法:小驼峰命名法要求第一个单词首字母小写,后面其他单词首字母大写.大驼峰法则在小驼峰法的基础上首字母大写. 一般驼峰命名法指小驼峰命名法.
- 小驼峰法: myAge,myName,idChecker
大驼峰法: MyAge,MyName,IDChecker
- 小驼峰法: myAge,myName,idChecker
-
帕斯卡命名法:一般指大驼峰命名法.
-
下划线命名法:要求单词与单词之间通过下划线连接即可.
- 下划线命名法: my_age,man_height
代码风格
- K&R风格: Kernighan&Ritchie风格,左花括号与使用它的语句同一行
void function()
{
if(bTrue){
//do someting......
}
else{
//do someting......
}
}
- Allman风格: 每个花括号单独占一行
void function()
{
if(bTrue)
{
//do someting......
}
else
{
//do someting......
}
}
- Whitesmiths风格: 换行基于Allman风格,但具体缩进有不同
void function()
{
if(bTrue)
{
//do something
}
else
{
//do someting......
}
}
标签:编码,第三章,下划线,驼峰,do,风格,名称,命名
From: https://www.cnblogs.com/mesonoxian/p/17864037.html