const int SALES_TAX 1 2宏和枚举量 书写形式: 所有字母皆为大写形式 且每个单词之间以 _连接 示范1: define SALES_TAX 1 示范2: enum PinStateType PIN_OFF PIN_ON 注意所有标识符在命名时都应为有对应意义的英文单词 避免使用单个字母 如i j... 9类的定义 1较长类的定义通常遵照下述形式 文件名: Class.h class Class 友元函数friends public: 构造函数constructor 析构函数destructor 9 成员函数member-function-decls protected: 成员函数member-function-decls private: 成员函数member-function-decls protected: 数据成员data-members private: 数据成员data-members 内联函数定义inline member-function-definitions 文件名: Class.cpp include quotClass.hquot 按成员函数声明顺序进行定义member-function-definitions in order declared 除内联函数except inlines 对于类的定义需要注意以下几点: ①public在文件的最前面 因为这部分内容是类的使用者最观注的 其实现细节出现在文件的稍后部分。
②内联函数的定义在类的构造部分之后 以区别于类的宣告部分不致在类的定义中产生混乱。
③关键词 public、 protected和 private不能省略。
④在类的构造函数中应该只做一些变量初始化和一些不会失败的动作。
2较短类的定义通常遵照下述形式 文件名: Class.h class Class 友元函数friends public: 构造函数constructor 析构函数destructor 成员函数member-function-decls protected: 成员函数member-function-decls private: 成员函数member-function-decls 10 protected: 数据成员data-members private: 数据成员data-members 按成员函数声明顺序进行定义member-function-definitions in order declared 11形式参数的宣告 在实际工程中宣告函数的形式参数时 每一个一般形参应单放一行 便于在必要时对其分别加以注释 通过单行注释符号“//”。
例如: function int arg1 // comment for arg1 char arg2 // comment for arg2 形式参数的命名要有一定的意义。
如果参数名提供了足够的信息可以考虑免去注释这时可以维持一行一个参数的形式也可以不维持为种形式。
示例 : _Rectangle CDC pDc // pointer of CDC int iLeft // the left position of rectangle int iTop // the top of rectangle int iRight // the right position of rectangle int iBottom // the bottom of rectangle 或 _RectangleCDC pDc int iLeft int iTop int iRight int iBottom 12注释行 适当的注释可以增强程序的可读性 注释的符号分为两种: “//”和“/... /”。
使用注释时应注意: 1“//”的注释行不可用于以“”开头的预处理命令行中。
2除去文件与函数始端的注释外 对程序中的每一处做过修改之后都要加“//注释”。
3在实际工程中一般每个程序和外部函数的文件始端都有注释用来指明: 文件名file name 权限proprietary markings 程序的规格 specification 11 维护的历史 history 程序主要的功能及包含的主要函数或类 程序中已知的限制 程序中存在的 bug 注意在本书中一般每个程序和外部函数的文件始端都用注释来指明文件名和程序主要的功能及包含的主要函数或类对于非常简单的程序和外部函数在程序和外部函数的文件始端可以只注释文件名。
4在实际工程中函数体前必须有对其进行说明的注释用来指明: 函数名 函数的输入、输出 函数有可能产生的副作用 函数中已知的限制 有关函数作用的简单描述 错误信息返回值 注意在本书中一般函数体都用注释来简单描述有关函数作用的简单描述对于非常简单的函数也可不加注释。
例如 // 已知三边a b c求三角形的面积 double AreaOf Triangle double a double b double c 函数体 5较长语句体的中断处必须由注释指明。
例如: while ...... ... ... if ... ... ... // end if ... ... // end while 13空格 1在使用括号时其前后无须加空格 例如: strcpydata ch 2在使用作用域分辨符::时其前后无须加空格例如: 12Classname::membername 3在使用冒号:时其前后必须加空格 例如: class Derived : public Base ... 以及 Derived::Derived : Base1 Derived::Derived : Base1 4在使用取地址符号amp时 标识符名必须紧跟在该操作符后 并且操作符前必须有一空格 例如: int ampx ampy 14修饰符的位置 修饰符 和 应该靠近数据类型还是靠近变量名是个有争议的活题。
若将修饰符 靠近数据类型例如int x从语义上讲此写法比较直观即x是int 类型的指针。
上述写法的弊端是容易引起误解例如int x y 此处y容易被误解为指针变量。
虽然将x和y分行定义可以避免误解但并不是人人都愿意这样做。
本书约定:应当将修饰符和近靠变量名 例如 char name int x y // 此处y不会被误解为指针 注意上述约定仅限于在用户自定义变量或函数参数等情况对于MFC自动生成的代码靠近类型本书对MFC生成的代码不作统一的格式处理都保持原型。
15语法标准 1在程序源码中 每行的内容不可超出屏幕 也就是说每行不宜超过 78 个字符。
2每一行只写一条语句。
3在程序的每个片段结束之后要跳过一行再继续。
16缩排规则 1每一个左括号和右括号都必须单独占一行 并且同与它相关联的控制结构如if while for switch等的边界处对齐。
右括号后一般有一个关于已结束的结构体的注释。
注意该规则同样适用于函数、结构、联合或类的定义。
例 1: String::Stringconst char ch if ch data new charstrlench 1 13 strcpydata ch else data new char1 data 0 // end if 2上一条规则的唯一例外是do-while结构。
在该结构中右括号必须与while condition位于同一行中 以免有人将while误解为 quotnull loopquot。
例 2: do ... while expr 3控制结构内部的语句体要用大括号括起 甚至当控制体内只有一条语句时也要如此。
这可以避免需要添加另外的语句时忘记加大括号。
例 3: if expr return1 当且仅当语句体内容为空时此规则可以例外 例 4: while expr 4复合表达式、逻辑与或表达式需要用括号括起来 以强调运算关系。
例 5: if m_wNumColors gt 256 ampamp m_hDlgHiColor TRUE return1 5标明程序、类定义及函数定义功能的标题注释必须紧靠左边界书写。
6类、结构、联合和数组初始化部分的形式应为每行只有一条语句 而且每条语句也要相对于类、结构、联合和数组的宣告处缩进两个格。
7控制结构如if while do-while for switch 中的判断条件处一般应以注释说明 true or false 的动作。
17运算符和关键字 1主要的二元运算符在书写时两边必须加空格。
- / lt gt ltlt gtgt ampamp - / amp lt gt ltlt gtgt amp 例 1: if left lt right 14 total num1 num2 - num3 num4 / 4 total2 num1 num2 - num3 num4 / 4 num5 num6 - num7 num8 / 4 2一元运算符和它的运算对象之间不能有空格。
例 2: sum 3赋值运算符两边必须有空格且对一组相关内容的赋值语句须按如下形式书写 例 3: bills_due true my_checkbook 0 bills_paid false 4条件运算符两边必须有一个空格。
5逗号或分号后面必须有一个空格 甚至空行 定义函数形参时除外。
例 4: int position1 position2 char bill_name check_title 6所有其它运算符两边都要有一个空格。
关键字if while for switch return后面须跟一个空格。
当位运算符amp gtgtltlt与其他运算符共同使用时应用
上一篇:
黑客教程_2011年黑客终极vip工具包大全_黑客从入门到精通_黑客进价教程【推荐】
下一篇:
哈弗F7 VS名爵HS,谁更懂得年轻人的心?