Chinaunix首页 | 论坛 | 博客
  • 博客访问: 37244
  • 博文数量: 16
  • 博客积分: 389
  • 博客等级: 一等列兵
  • 技术积分: 215
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-14 02:44
文章分类
文章存档

2012年(16)

我的朋友

分类: C/C++

2012-08-14 20:05:26

1.4.B 编码规范——如何写出简洁优美的代码

下面是来自两位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元是付给了他所遵循的良好的编码规范。

所谓编码规范,是在项目进行过程中所制定的关于编码格式、注释风格的书写规范,它可以极大地提高代码的可读性,增加代码的可维护性。除了这些看得见的好处之外,良好的编码规范还可以预防一些常见的编程错误(例如名字冲突、嵌套错误等)。

世界上正在应用的编码规范有很多,有各大公司根据自己的情况制定的编码规范,也有针对各种编程语言而制定的编码规范。但是,这个世界上并没有一种所谓“最好的”编码规范,即使是现在所流行的各种编码规范也都各有其优缺点。所以,没有普遍适用的标准。如果我们所在的项目团队已经有了一份编码规范了,那么就可以按照上面说的做。如果硬要推翻重来,那么可能会带来更多的争吵而不是把问题解决。从商业角度来看,只有两件事是重要的:一是代码可读性好,二是团队中的每个成员都使用相同的风格。

因此,我们不要妄图去制定一种“最好的”编码规范,只能结合自己的项目实际,同时参照现在流行的编码规范,采纳其优点,摒弃其缺点,制定出一种“最适合”的编码规范,并且在项目实践中认真严格地执行,这就是“最好的”编码规范。

阅读(703) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~