转自:http://blog.sina.com.cn/s/blog_4ed027020100hfkd.html
导言:编程五大原则
王伟冰
本文讨论的是如何提高编程的质量和效率,涉及编程的十八个方面:类,函数,泛型,委托,封装,约束,继承,多态,宏思想,语法糖,命名,陷阱,异常,性能优化,多线程,代码编辑,测试,调试。
示例代码主要是用C++写的,但是我所讨论的原则同样适用于其它语言。
我根据自已实际编程的经验,以及阅读过的编程书籍,总结出编写代码的五条基本原则:简洁,安全,快速,灵活,清晰。下面用一些小小的例子,来接触一下这五个原则。
我们在编程的时候,经常会遇到常量,比如说圆周率,我们可以这样写:
const double PI=3.14159265;
这样做的第一个好处就是,每一次用到圆周率时,只需要写PI,就不用写什么3.14…一大串了,这就引出了第一个原则:
简洁原则:写出来的代码要尽量简洁,避免重复。
使用PI的另一个好处是,不容易出错。如果我们每一次都写3.14…,那么有可能某一次会不小心写错了哪位数字,导致计算结果不正确,这种错误很难被发现。但是用PI的话,即使我们不小心把PI拼错了,编译器也会提醒我们。这就是第二个原则:
安全原则:写出来的代码要不易出错,易于查错。
那么,为什么要写成const呢?直接写double PI=3.14159265不也可以吗?这涉及到性能问题,const型的变量编译时就能确定它的值,而非const型的变量在运行才能得到它的值,执行速度会慢一些。于是引出第三个原则:
快速原则:写出来的代码要快速运行,尽量省时。
再来看另一个例子,比如你想输入10个数,然后排好序输出来:(省略具体过程)
const int Length=10;
int a[Length];
for(int i=0;i< Length;i++) ……//逐个输入
……//排序
for(int i=0;i< Length;i++) ……//逐个输出
为什么要用Length来代替10呢?这不是违反了简洁原则吗?但是想想,假如你还想试一试输入20个数的情况,那么你只需要把第一句中的10改成20就可以了。如果全部都直接写10,那就一个个都要改成20,麻烦不?所以就有第四个原则:
灵活原则:写出来的代码要易于更改,易于扩展。
那么,为什么要用Length呢?直接写L不是更简洁吗?简洁是简洁,但是写成L不能准确体现出长度这个意义,让人无法一眼看出这个变量的作用。这是第五个原则:
清晰原则:写出来的代码要意图清晰,易于阅读。
以上五个原则,不分优先级,同等重要。如果它们出现冲突,该如何取舍,取决于实际情况。随后的章节会详细地介绍这些原则在具体编程中的应用。