2012年(16)
分类: C/C++
2012-08-14 20:05:26
下面是来自两位C语言程序员的实现相同功能的两段代码:
l 月薪1000元的程序员的代码:
#include
int main()
{
FILE *Wenjian; char Str[100];
Wenjian = fopen("test.txt","w");
do {
gets(Str);
if(Str[0] == '!')
break; fputc(Str,Wenjian); }while(1);
fclose(Wenjian);
return 0;
}
l 月薪10000元的程序员的代码:
#include
int main()
{
// 文件指针和保存输入的字符串
FILE *fp = NULL;
char str[100] = "";
// 以可写方式打开文件
if(NULL==(fp = fopen("test.txt","w")))
{
printf("cannot open the file.\n");
exit(0);
}
// 提示用户输入
printf("please input a string:\n");
do
{
// 判断输入是否结束
gets(str);
if('!'==str[0])
break;
// 写入文件
fputc(str,fp);
}while(1);
// 关闭文件
fclose(fp);
}
其实,不用我多说,两位程序员的工资,已经很明显地说明了这两段代码孰优孰劣。那位月薪1000元的程序员的代码,有着大多数初学者编写代码时的坏习惯:变量名大小写混用、中英文混用(这大约是中国程序员的一大特点);同一行代码定义多个不相关变量;定义变量而不进行必要的初始化;对文件打开等可能出错的操作不进行防错处理;缺少必要的程序提示;“==”比较中变量在前常量在后;程序中只有代码没有注释;各种语句没有经过较规范的排版、代码版式错乱无章、无规则的代码缩进等等。
第一段代码集中地反映了初学者在开始学习编写程序的时候,因为没有接触良好的编码规范而形成的混乱的编码习惯,使得自己写出来的代码“惨不忍睹”,没有任何的可读性和可维护性。虽然编译器并不在意你编写的代码是否美观,但是,我们应该记住,除了编译器之外,我们的代码也是写给别人看的。如果不想让别人在维护你的代码时骂娘的话,如果不想让你的工资始终停留在1000元上下的话,就要好好学习一下编码规范,向月薪10000元的程序员看齐。
对比于第一段月薪1000元的程序员的代码,第二段程序阅读起来就流畅自然多了,几乎不用动任何脑筋就可以理解整个程序,自然其可维护性也就大大提高了。实现相同功能的两段代码,只是因为编码风格的不同,写代码的人所受到的待遇就有着天壤之别。也许,第二位程序员每个月拿到的10000元中,有1000元是付给他所实现的功能的,而有9000元是付给了他所遵循的良好的编码规范。
所谓编码规范,是在项目进行过程中所制定的关于编码格式、注释风格的书写规范,它可以极大地提高代码的可读性,增加代码的可维护性。除了这些看得见的好处之外,良好的编码规范还可以预防一些常见的编程错误(例如名字冲突、嵌套错误等)。
世界上正在应用的编码规范有很多,有各大公司根据自己的情况制定的编码规范,也有针对各种编程语言而制定的编码规范。但是,这个世界上并没有一种所谓“最好的”编码规范,即使是现在所流行的各种编码规范也都各有其优缺点。所以,没有普遍适用的标准。如果我们所在的项目团队已经有了一份编码规范了,那么就可以按照上面说的做。如果硬要推翻重来,那么可能会带来更多的争吵而不是把问题解决。从商业角度来看,只有两件事是重要的:一是代码可读性好,二是团队中的每个成员都使用相同的风格。
因此,我们不要妄图去制定一种“最好的”编码规范,只能结合自己的项目实际,同时参照现在流行的编码规范,采纳其优点,摒弃其缺点,制定出一种“最适合”的编码规范,并且在项目实践中认真严格地执行,这就是“最好的”编码规范。