集中精力写出定义清晰、文档完备、行为良好的类和函数,会使代码易于使用和维护。
原则1: 重复使用的代码用函数替代
例子
int main (int argc,char*azEv[])
{
if (argc<l )
{
cerr<<"Usage: "<<argv[0]<< "〈filename〉"<<endl; // 重复使用的代码
exit(1);
}
//...
if (wantHelp)
{
cerr<<"Usage: "<<argv[0]<< "〈filename〉"<<endl; // 重复使用的代码
}
//...
}
原则2: 一定要做到先声明后使用
说明
C++必须这样做(否则编译通不过)。C程序没有强制要求,但也建议先提供原型,再使用函数。
原则3: 函数原型声明放在一个头文件中
原则4: 函数无参数一定要用void标注
例子
int foo (void); // 比“int foo();”好
原则5: 避免函数的参数过多
定量分析的参考
一个函数的参数应该限制在5个以内。
原则6: 尽量保持函数只有唯一出口
原则7: 显式定义返回类型
例子
// 隐含的返回类型是整型,不好
Password_T::length (void);
// 显式声明,好
int Password_T::length (void);
原则8: (非void)任何情况都要有返回值
说明
任何非void函数在任何情况下都要返回某个值。
例子
int valueGet (int const*pValue)
{
if (pValue !=NULL)
{
return *pValue;
}
} // else时会返回什么
原则9: 返回指针类型的函数应该用NULL表示失败
例子
int* MyFunction (void)
{
// ...
if ("something wrong") // 如果遇到问题,函数需要失败返回
{
return NULL; // 返回NULL表示失败
}
}
//…
int*pCount=myFunction();
if (pCount !=NULL) // 现在有办法知道函数是否成功
//...
原则10: 类的成员变量应该尽量定义成私有,通过属性来访问。
原则11: 类的构造函数,它应该用递增的方式写(比如:参数多的写在后面)。
原则12: 无论如何,每一个类都应该定义 toString 方法:
例子
public String toString()
{
String retval = "CounterSet: ";
…………..
return retval;
}
- 第一章 概述
- 1.1规范制定原则
- 1.2 术语定义
- 1.3 文件命名组织
- 1.3.1文件命名
- 1.3.2文件注释
- 第二章 编码风格
- 第三章 注释
- 3.1 注释概述
- 3.2 文档型注释
- 3.3 类c注释
- 3.4 单行注释
- 3.5 注释标签
- 第四章 声明
- 4.1每行声明数
- 4.2初始化
- 4.3位置
- 4.4类和接口的声明
- 4.5字段的声明
- 第五章 命名规范
- 5.1命名概述
- 5.2大小写规则
- 5.3缩写
- 5.4命名空间
- 5.5类
- 5.6接口
- 5.7属性 (Attribute)
- 5.8枚举 (Enum)
- 5.9参数
- 5.10方法
- 5.11属性 (property)
- 5.12事件
- 5.13 常量 (const)
- 5.14 字段
- 5.15 静态字段
- 5.16 集合
- 5.17 措词
- 第六章 语句
- 6.1每行一个语句
- 6.2 复合语句
- 6.3 return 语句
- 6.4 if、 if-else、if else-if 语句
- 6.5 for、foreach 语句
- 6.6 while 语句
- 6.7 do - while 语句
- 6.8 switch - case 语句
- 6.9 try - catch 语句
- 6.10 using 块语句
- 6.11 goto 语句
- 第七章 函数与类
- 第八章 内存分配和释放
- 第九章 兼容性
- 第十章 控件命名规则
- 10.1 命名方法
- 10.2 主要控件名简写对照表
- 附录一: 匈牙利命名法