较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。
在两个以上的关键字、变量、常量进行对等操作时,他们之间的操作符之前、之后或前后要加空格;进行非对等操作时,如果是关系密切的立即操作符,后不应加空格。
逗号、分号只在后面加空格
比较操作符,赋值操作符“=”、“+=”,算术操作符“+”、“-”,逻辑操作符“&&”、“&”,位域操作符“<<”、“^”等双目运算符前后加空格
“!”、“~”、“++”、“--”、“&”(地址运算符)等单目操作符前后不加空格
“->”、“.”前后不加空格
if、for、while、switch等与后面的括号间应加空格,使if等关键字更为突出、明显
注释应与其描述的代码相近,对代码的注释应放在其上方或右方相邻位置,不可放在下面。如放在上方则需与其上面的代码用空行隔开。
标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。
不要使用大小写与下划线混排的命名方式,用做特殊标识如成员变量或全局变量的m_和g_,其后加上大小写混排的方式是允许的。
用正确的反义词组命名具有互斥意义的变量或相反动作的函数
add | remove |
begin | end |
create | destroy |
insert | delete |
first | last |
get | release |
increment | decrement |
put | get |
add | delete |
lock | unlock |
open | close |
min | max |
old | new |
start | stop |
next | previous |
source | target |
show | hide |
send | receive |
source | destination |
cut | paste |
up | down |
注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。
避免使用不易理解的数字,用有意义的标识来替代。涉及物理状态或者含有物理意义的常量,不用直接使用数字,必须用有意义的枚举或宏来代替。
严禁使用未经初始化的变量作为右值。
结构的功能要单一,是针对一种事务的抽象,不要设计面面俱到、非常灵活的数据结构。
编程时,要注意数据类型的强制转换。
防止将函数的参数作为工作变量。将函数的参数作为工作变量,有可能错误的改变参数内容。对于必须改变的参数,最好先用局部变量代之,最后再将改局部变量的内容赋给该参数。
函数的规模尽量限制在200行以内。
一个函数仅完成一件功能,不要设计面面俱到的函数。
为简单功能编写函数。
函数的功能应该是可以预测的,也就是只要输入输入数据相同就应产生同样的输出。函数的static局部变量是函数的内部存储器,有可能使函数功能不可预测。然而,函数的返回值为指针类型时,则必须是static局部变量的地址作为返回值。
避免设计多参数函数,不使用的参数从接口中去掉。
非调度函数应减少或防止控制参数,尽量只使用数据参数。
检查函数所有参数输入、非参数输入(如数据文件、公共变量等)的有效性。
函数名应准确描述函数的功能,使用动宾词组为执行某操作的函数命名。如果是OPP方法,可以只有动词(名词是对象本身)。
在调用函数填写参数时,应尽量减少没有必要的默认数据类型转换或强制数据类型转换。
改进模块中函数的结构,降低函数见的耦合度,并提高函数的独立性以及代码的可读性、效率和维护性。优化函数结构时,要遵守以下原则:
在保证软件系统的正确性、稳定性、可读性及可测性的前提下,提高代码效率。
循环体内工作量最小化。
在多重循环中,应将最忙的循环放在最内层。
尽量减少循环嵌套层次。
避免循环体内含判断语句,应将循环语句置于判断语句的代码块之中。
原文:https://www.cnblogs.com/cpp-blog/p/12667619.html