标签:
第 3 章 命名规则
1.共性规则:
规则1.标识符应当直观且可以拼读,可望文知意,不必进行“解码”。
规则2.标识符的长度应当符合“min-length&& max-information”原则。
规则3.命名规则尽量与所采用的操作系统或开发工具的风格保持一致。
规则4.程序中不要出现仅靠大小写区分的相似的标识符。
例如:
int x, X; // 变量 x 与 X 容易混淆
void foo(int x); // 函数 foo 与 FOO 容易混淆
void FOO(float x);
规则5.程序中不要出现标识符完全相同的局部变量和全局变量,尽管两者的
作用域不同而不会发生语法错误,但会使人误解。
规则6.变量的名字应当使用“名词”或者“形容词+名词” 。
例如:
float value;
float oldValue;
float newValue;
规则7.全局函数的名字应当使用“动词”或者“动词+名词”(动宾词组) 。
类的成员函数应当只使用“动词” ,被省略掉的名词就是对象本身。
例如:
DrawBox(); // 全局函数
box->Draw(); // 类的成员函数
规则8.用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。
例如:
int minValue;
int maxValue;
int SetValue(…);
int GetValue(…);
建议:尽量避免名字中出现数字编号,如 Value1,Value2 等,除非逻辑上的
确需要编号。
2.简单的 Windows 应用程序命名规则
规则1.类名和函数名用大写字母开头的单词组合而成。
规则2.变量和参数用小写字母开头的单词组合而成。
规则3.常量全用大写的字母,用下划线分割单词。
规则4.静态变量加前缀 s_(表示 static) 。
规则5.如果不得已需要全局变量,则使全局变量加前缀 g_(表示 global) 。
规则6.类的数据成员加前缀m_(表示 member) ,这样可以避免数据成员与
成员函数的参数同名。
规则7.为了防止某一软件库中的一些标识符和其它软件库中的冲突,可以为
各种标识符加上能反映软件性质的前缀。
第 4 章 表达式和基本语句
1.运算符的优先级
规则:如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免
使用默认的优先级。
2.复合表达式
规则1.不要编写太复杂的复合表达式。
规则2.不要有多用途的复合表达式。
规则3.不要把程序中的复合表达式与“真正的数学表达式”混淆。
3. for 语句的循环控制变量
规则1.不可在for 循环体内修改循环变量,防止for 循环失去控制。
规则2.建议 for 语句的循环控制变量的取值采用“半开半闭区间”写法。
4.循环语句的效率
建议1.在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的
循环放在最外层,以减少 CPU 跨切循环层的次数。
建议2.如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。
5. switch 语句
规则1.每个 case 语句的结尾不要忘了加 break,否则将导致多个分支重叠
(除非有意使多个分支重叠) 。
规则2. 不要忘记最后那个default 分支。 即使程序真的不需要 default 处理,
也应该保留语句 default : break; 这样做并非多此一举,而是为了防止别人误以
为你忘了 default 处理。
第 5 章 常量
1.为什么需要常量
规则:尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或
字符串。
2 const 与 #define 的比较
规则:在 C++ 程序中只使用const 常量而不使用宏常量,即 const 常量完
全取代宏常量。
3.常量定义规则
规则1.需要对外公开的常量放在头文件中,不需要对外公开的常量放在定义
文件的头部。为便于管理,可以把不同模块的常量集中存放在一个公共的头文件中。
规则2.如果某一常量与其它常量密切相关,应在定义中包含这种关系,而不
应给出一些孤立的值。
第 6 章 函数设计
1.参数的规则
规则1.参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字。
如果函数没有参数,则用 void 填充。
规则2. 参数命名要恰当,顺序要合理
规则3.如果参数是指针,且仅作输入用,则应在类型前加 const,以防止该
指针在函数体内被意外修改。
规则4.如果输入参数以值传递的方式传递对象,则宜改用“const &”方式
来传递,这样可以省去临时对象的构造和析构过程,从而提高效率。
建议1.避免函数有太多的参数,参数个数尽量控制在 5 个以内。如果参数太
多,在使用时容易将参数类型或顺序搞错。
建议2.尽量不要使用类型和数目不确定的参数。
2.返回值的规则
规则1.不要省略返回值的类型。
规则2.函数名字与返回值类型在语义上不可冲突。
规则3.不要将正常值和错误标志混在一起返回。正常值用输出参数获得,而
错误标志用 return 语句返回。
建议1.有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,
可以附加返回值。
建议2.如果函数的返回值是一个对象,有些场合用“引用传递”替换“值传
递”可以提高效率。而有些场合只能用“值传递”而不能用“引用传递” ,否则会出错。
3. 使用断言
建议1.使用断言捕捉不应该发生的非法情况。不要混淆非法情况与错误情况
之间的区别,后者是必然存在的并且是一定要作出处理的。
建议2.在函数的入口处,使用断言检查参数的有效性(合法性)。
第 7 章 内存管理
1.重载与覆盖 ,成员函数被重载的特征:
(1)相同的范围(在同一个类中) ;
(2)函数名字相同;
(3)参数不同;
(4)virtual 关键字可有可无。
2.覆盖是指派生类函数覆盖基类函数,特征是:
(1)不同的范围(分别位于派生类与基类) ;
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有virtual 关键字。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/weichanjuan3/article/details/47283177