1. 代码中突出的问题是缺少通用性,好些的代码都是为了简单的实现自己既定的功能,完成一项作业而设计。不能抽象成一个接口或者简单的功能函数供别人使用或者自己使用,简而言之,就是规范性还不够,需要多加注意。
2. 代码风格方面的问题。语句之间加入适当的空格,当前大部分的代码是缩成一团,清晰度不够高。比较详细的提了几个例子。比如,下面的例子:
if (pNode->isLeaf!=0)
{
while (i>0&&key<pNode->keyValue[i-1])
{
pNode->keyValue[i] = pNode->keyValue[i-1];
--i;
}
}
代码过于紧凑了,应该在语句之间加上适当的空格
if( pNode->isLeaf != 0 )
{
while ( i > 0 && key < pNode->keyValue[i-1] )
{
pNode->keyValue[i] = pNode->keyValue[i-1];
--i;
}
}
还有为了是代码在不同的IDE中打开显示不会混乱,需要将tab键改为空格。平时在写代码的时候不用tab,改为空格来替代。
3. 在头文件和头文件的声明函数中不用cout来输出错误信息。应该做的是抛出异常。只有在测试文件中可以使用cout来显示出现的问题。
4. 测试的规范性,关注一下一些开源项目的测试代码,提高自己测试代码的规范性。例如:assert()的运用。
5. 测试用例的规范。个人感觉对于测试这一块,可以先奔着一个不是太严格的标准来普及一下规范性,因为毕竟如果按照严格标准的测试用例的规范来要求,需要太多的时间。
6. using namespace *;的使用,除非自己特别确定命名空间里面的东西不会和自己写的程序不会冲突,一般情况下不要直接using了,可以改为std::cout,std::endl等。
7. 头文件要写的尽量的精简。
8. 一般头文件中,需要对自己声明的变量和函数做出声明。而在函数定义时一些重复的注释没有必要再写。还有一定要养成用英文写注释的习惯。还有要培养自己用英文解决问题的能力,比如,检索问题之类的可以用英文。
9. Using的一些其他功能方面的介绍。不多做赘述,可以自己再网上再看看。
10. 形参之间是用逗号来分割的,在逗号的后面需要加上空格。
void Func1(int x, int y, int z); // 良好的风格
void Func1 (int x,int y,int z); // 不良的风格
11. For(;;)循环括号中的三条语句,如果比较长的话,可以写成三行,从而使代码更加的美观易读。
12. 跟在语句后的注释,尽量做到对齐,做到规范。
13. { a[i] = 3;i++;} 与a[i++] = 3应该用哪种写法?按照具体环境的语义来判断,如果数组存在循环形式的后移之类的情况,可以考虑用后一种写法,在编译器的层面上,两者相当。
14. 安全的析构函数,防止两次调用析构,对同一块内存一次new,两次delete。
class Linklist
{
char* pbuf;
Linklist();
~Linklist();
};
Linklist::~Linklist()
{
delete []pbuf;
pbuf = 0;
}
15. 大括号的代码分块功能。在徐老师的代码里面有单纯的用大括号括起来的代码块,规范的写的话,这些代码块应该定义成为函数在外面,然后里面内部调用。用大括号括起来的代码块在效率上更优一些。小光也提出了跟内联函数的功能类似。不知道这种写法是不是推荐?