这个月的任务貌似很简单,真的没什么钻研的动力,希望能很快的完成,并转入GPS的学习中去。
先改改前段时间编程序几个比较烂的地方:
1)变量命名很差,很多i.j之类;
2)类基本是Pubilc,很少Private;
以下引自CSDN博客http://blog.csdn.net/richard_2010/archive/2006/03/16/625747.aspx;
1) 在程序中,空行起着分隔程序段落的作用。空行得体(不过多也不过少)将使程序的布局更加清晰。一般地,在每个类声明之后、每个函数定义结束之后都要加空行。而在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。
2) 一条代码只做一件事,比如定义变量的时候最好单独占一行,而变量定义时最好给予初值。'{'和'}'最好单独列一行,并且两个对应的花括号应该处于同一列。一条代码如果太长了应该分开来写,如:
if ((very_longer_variable1 >= very_longer_variable12)
&& (very_longer_variable3 <= very_longer_variable14)
&& (very_longer_variable5 <= very_longer_variable16))
3)在定义指针的时候我们容易遇到这样的问题,如int* i,j;可能会误认为我们定义了两个指针变量i,j,但实际上只有i是指针变量,j是整形变量,为了防止这样的情况出现,我们一般应该把'*'号靠近要定义的变量名,如int *i,j;这样就不会产生那样的误会了。
4)定义类的时候将public和private类型的数据写在前面都是可以的,但提倡将public类型数据写在前面,因为public一般定义的是类向外的接口而private一般是属于类需要隐藏的数据,这样做不仅让自己在设计类时思路清晰,而且方便别人阅读。毕竟用户最关心的是接口,谁愿意先看到一堆私有数据成员?!
5)一定要写注释!程序必须是写给人看的,仅仅偶尔才在机器上执行(Harold Abelson等)。编写程序首先为人,其次为计算机(Steve McConnell)。写注释有利于别人阅读和理解你的程序,更有可能帮助你自己理解你写的程序,可能你程序完成后的维护者是你自己,到时候你得尝试记起一年以前你在想什么。
6)标识符应当直观且可以拼读,可望文知意,不必进行“解码”。其长度应当符合“min-length && max-information”原则。
7)一般地,常量全部用大写,静态变量前面加s_,全局变量前加g_,
8)类名、函数名和结构体名等第一个字母用大写,类中的数据成员前加m_,不要仅用大小写区别两个变量名。
9)最客观的是命名规则尽量与所采用的操作系统或开发工具的风格保持一致。
以下引自博客http://blog.csdn.net/wplxb/archive/2007/04/19/1571246.aspx
★ 空行
在每个类声明之后、每个函数定义结束之后都要加空行。
在一个函数体内,逻辑上密切相关的语句之间不加空行,其它地方应加空行分隔。
---------------------------------------------------------------------------
★ 变量
1. 通则
不要节约变量的使用,也就是说,不要把同一个变量用于多种用途。尤其是指针变量。
-- 理由:这样可以防止造成混乱。如果一个变量用于多种用途,很容易到最后把自己都弄糊涂。
2. 变量定义
指针、引用类型的变量一行定义一个。
初始化的数组变量一行定义一个。
要单独注释的变量一行定义一个。
其他变量最好也一行定义一个。
3. 变量初始化
最好在变量定义时初始化,尤其是指针变量。
-- 理由:这样可以防止以后修改代码时在变量定义和初始化语句之间加代码而造成错误。
---------------------------------------------------------------------------
一行代码只写一条语句。
if, for, while, do 等语句自占一行。不论执行语句有多少都要加花括号。花括号应独占一行并且位于同一列,同时与引用它们的语句左对齐。
-- 理由:这样可以防止书写失误。
---------------------------------------------------------------------------
★ 空格
在定义指针和引用时,* 和 & 前后各留一个空格(但多级指针多个 * 之间不留空格)。在解引用和取地址时,* 和 & 与后面的标识符间不留空格。
-- 理由:突出指针和引用类型的定义,防止犯错。
二元操作符的前后应当加空格。
一元操作符如前后不加空格。
"[]", ".", "->" 前后不加空格。
if, for, while, do 等关键字之后应留一个空格再跟左括号,以突出关键字。
函数名之后不要留空格,紧跟左括号。
左括号向后紧跟,右括号、逗号、分号向前紧跟,紧跟处不留空格。
逗号之后要留空格。如果分号不是一行的结束符号(例如 for 语句中的情况),其后要留空格。
【未确定的一些做法】对于表达式比较长的 for 语句和 if 语句,紧凑起见可以按优先级先后顺序去掉一些空格,如 for (i=0; i<10; i++) 和 if ((a<=b) && (c<=d))。
---------------------------------------------------------------------------
★ 缩进
只用空格,不用制表符。
程序一级缩进四个空格。
续行缩进八个空格,再续行时逻辑深一级多缩进四个空格,依此类推。如下例所示:
if (a_very_long_name_variable_a && a_very_long_name_variable_b
&& (a_very_long_name_variable_c || a_very_long_name_variable_d))
{
}
if (a_very_long_name_variable_a && a_very_long_name_variable_b
&& (a_very_long_name_variable_c || a_very_long_name_variable_d
|| a_very_long_name_variable_e))
{
}
if (a_very_long_name_variable_a && a_very_long_name_variable_b
&& (a_very_long_name_variable_c || a_very_long_name_variable_d
|| a_very_long_name_variable_e)
&& (a_very_long_name_variable_f || a_very_long_name_variable_g))
{
}
switch 语句和 case 语句对齐(处于同一级缩进上)。
---------------------------------------------------------------------------
★ 长行拆分
代码行最大长度一般控制在 80 个字符以内。
-- 理由:代码行过长,眼睛看不过来,而且在设置了自动折行的编辑器中影响阅读,也不便于打印。
长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要进行适当的缩进,使排版整齐,语句可读。
---------------------------------------------------------------------------
★ 类的版式
将 public 部分(接口函数)写在前面,而将 private 部分(私有数据)写在后面。
-- 理由:这样做不仅让自己在设计类时思路清晰,而且方便别人阅读。用户最关心的是接口!
---------------------------------------------------------------------------
★ 注释格式
行尾注释与代码之间空一格。
两行及以上的块注释格式:
/*
* 函数介绍:
* 输入参数:
* 输出参数:
* 返回值:
*/
if-else 语句注释格式:
/*
* comments of if part
*/
if (...)
{
// codes
}
/*
* comments of else part
*/
else
{
// codes
}
---------------------------------------------------------------------------
★ 注释
注释通常用于:
(1) 版本、版权声明。
(2) 函数接口说明(一般应包括函数介绍、输入参数、输出参数和返回值)。
(3) 重要的代码行或段落提示。
虽然注释有助于理解代码,但注意不可过多地使用注释。
注释是对代码的“提示”,而不是文档。程序中的注释不可喧宾夺主,注释太多了会让人眼花缭乱。注释的花样要少。
如果代码本来就是清楚的,则不必加注释。否则多此一举,令人厌烦。
边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。
注释应当准确、易懂,防止注释有二义性。错误的注释不但无益反而有害。
尽量避免在注释中使用缩写,特别是不常用缩写。
注释的位置应与被描述的代码相邻,可以放在代码的上方或右方,不可放在下方。
当代码比较长,特别是有多重嵌套时,应当在一些段落的结束处加注释,便于阅读。