没有合适的资源?快使用搜索试试~ 我知道了~
RuleChecker 编码规范
5星 · 超过95%的资源 需积分: 14 43 下载量 67 浏览量
2012-02-27
17:49:51
上传
评论 1
收藏 193KB DOC 举报
温馨提示
试读
20页
本文挡详细描述了在Logiscope——Rulechecker中包含的所有编码规范。对每一条编码规范,分别给出了它的名称、规范的内容描述、参数(只针对可设置的规范)、遵守规范以及示例,Rulechecker共包含89条编码规范。
资源推荐
资源详情
资源评论
C++ RuleChecker Rules
有关 C++的 89 个规则,其中有 35 个规则允许根据实际情况配置如何使用(方法是调
整规则提供的参数),其余 54 个规则不允许配置(理由是:业界认可的通行规则或者专家
规则)。这 89 个规则,实际使用中,可以选择其任意子集。
其中,前 70 条规则,是从多家公司收集的编程规则集,提取的精华。后 19 条规则,
是 Scott Meyers 规则。
1) ansi(Function Declarations in ANSI Syntax)
描述:函数的声明和实现必须符合 ANSI 语法。
用意:提高代码的易读性和可移植性。
配置 1:name
函数的所有参数必须命名,并且必须在函数声明中说明各个参数的类型。
配置 2:void
禁止函数的参数为空。
例子:
正确写法 错误写法
f(int a, char *b); f(int, char*);
f(int a, char *b)
{ ...}
f(a, b)
int a;
char *b
{ ...}
f(void); f();
2) asscal (don’t use Assignment inside Function Calls)
描述:不允许在函数调用中使用赋值运算符(=, +=, -=, *=, /=, %=, >>=, <<=, &=, |=, ^
=,++,--)。
用意:去除有关赋值顺序的不明确性。
配置:无。
例子:
正确写法 错误写法
n=f(b);
b++;
n=f(b++);
3) asscon (don’t use Assignment inside conditions)
描述:不允许在 if , while , for , switch 控制指令中的条件表达式中使用赋值运算符(=,
+=, -=, *=, /=, %=, >>=, <<=, &=, |=, ^=,++,--)。
用意:这个语句 if(x=y) 是不清楚不明确的,也许有人认为作者想写成 if (x= =y)。
配置:无
例子:
正确写法 错误写法
第 1 页 共 20 页
x -= dx;
if (x) { ...
for (i=j=n; i > 0; i--, j--)
{ ...
if (x -= dx) { ...
for (i=j=n; i-- > 0; j--) {..
4) assexp ( don’t nest assignments inside expressions)
描述:在表达式内部
一个运算数只能被赋值一次。
如果有多个赋值运算符,一个被赋值的运算数能且只能出现在它被赋值的位
置。
用意:去除有关赋值顺序的不明确性
配置:无
例子:
正确写法 错误写法
i = t[i++];
a=b=c+a;
i=t[i]=15;
5) blockdecl (place Declarations at the beginning of blocks)
描述:声明必须在语句体的开始处。
用意:代码易读性。
配置:无
例子:
正确写法 错误写法
6) Boolean (don’t use abbreviated Boolean expression)
描述:不允许使用缩写的布尔表达式。
用意:代码易读性
配置:无
例子:
正确写法 错误写法
AlwaysTrue = true;
while (AlwaysTrue == true) {
if (test == true) {
for (i=1; function_call(i); i+
+){
while (1) {
if (test) {
for (i=1; function_call(i); i++)
{
7) brkcont (Break and Continue forbidden, except in switch statements)
第 2 页 共 20 页
描述:break 和 continue 指令禁止使用在控制语句(for, do ,while)的条件表达式中。然
而,break 指令被允许使用在 switch 语句的结构体中。
用意:像 goto 一样,这些指令会改变代码的结构。在循环中禁止使用它们将使代码比
较容易理解。
配置:无
例子:
正确写法 错误写法
8) classuese (don’t use methods not known in the user class)
描述:下列表达式都是不允许的:u.v.a, u.v.f(),u.g().a, u.g().f(),表达式
中使用->操作符也是一样。
用意:阻止通过串联(连续的)的调用方法,调用一个在用户类中不知道的类方法
(隐式使用)。
配置:无
例子:
正确写法 错误写法
myWindow.itsButton.push();
Error->pos.line;
9) cmclass (use a single class per code file)
描述:一个代码文件中,每个函数都必须属于一个相同的类。
C 函数被认为属于 main 类。
默认情况下,一个代码文件有一个如下的后缀:*.cc, *.cxx, *.cpp,*.C or *.c。
用意:代码易读性。
配置:使用一个字符串来表示那些需要考虑的代码文件的类型。
例子:
正确写法 错误写法
10) cmdef (code files should not contain class declarations)
描述:代码文件不能包含任何类的声明。
C 函数被认为属于 main 类。
默认情况下,一个代码文件有一个如下的后缀:*.cc, *.cxx, *.cpp,*.C or *.c。
用意:代码易读性。
配置:使用一个字符串来表示那些需要考虑的代码文件的类型。
例子:
正确写法 错误写法
11) condop (the ternary operator (? : ) should not be used)
第 3 页 共 20 页
描述:三重条件操作符? ... : ...禁止使用。
用意:代码易读性。
配置:无
例子:
正确写法 错误写法
12) const (literal constants should not be used)
描述:数字和字符串必须被作为常量声明,而不是被直接作为文字形式在程序中使用。
可以指定允许使用的文字常量。默认情况下允许直接使用"", " ", "0" and "1"。
用意:代码易维护性。
配置:一个字符串列表用来表示允许直接使用的常量。
例子:
正确写法 错误写法
#define TAB_SIZE 100
enum i_val { ok =7; ko =11};
const char HelloWorld[] =
"Hello World.\n";
char tab[TAB_SIZE];
i_val i;
...
if (i == ok) {
p = HelloWorld;}
char tab[100];
int i;
...
if (i == 7) {
p = "Hello World.\n";}
13) constrcpy (Each class must contain an explicit copy constructor)
描述:每个类都必须明确包含它的拷贝构造函数。
用意:确保作者已经考虑到拷贝该类的对象的方法。
配置:如果使用了字符串“dynalloc”,表示这个规则只有在类的成员中包含指针的时候
才检查。
例子:
正确写法 错误写法
class aClass {
...
aClass(const aClass
&object); // "const" is
optional
...
};
14) constrdef (Each class must contain an explicit default constructor)
描述:每个类都必须明确包含它的默认构造函数。
用意:确保作者已经考虑到初始化该类的方法。
配置: 无
第 4 页 共 20 页
剩余19页未读,继续阅读
资源评论
- 死神qw0072016-01-18用到了,多谢分享!
- fengxiangbo2013-03-31我一直在找这个,要不我就自己翻译了
- fengbingchun2013-02-01不错,介绍的很详细。
- 向太阳的进击2013-12-18这个还算给力,起码不用自己来翻译了。一般详细吧。
shadenggao
- 粉丝: 4
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 汇编语言开发案列优质学习资料资源工具与案列应用场景开发文档教程资料.txt
- Python + OpenCV开发案列优质学习资料资源工具与案列应用场景开发文档教程资料.txt
- 儿童节小游戏开发案列优质学习资料资源工具与案列应用场景开发文档教程资料.txt
- MySQL开发案列优质学习资料资源工具与案列应用场景开发文档教程资料.txt
- MATLAB仿真案列优质学习资料资源工具与案列应用场景开发文档教程资料.txt
- MATLAB优质学习资料资源工具与案列应用场景开发文档教程资料.txt
- 4319447015972566022ssm城市交通海量数据管理系统.zip
- 前端开发实例优质学习资料资源工具与案列应用场景开发文档教程资料.txt
- Screenshot_20240601_132217.jpg
- Screenshot_20240601_132233.jpg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功