0 引言
做“编程的学问”?这绝不是小题大做。中国的程序员有的是,但他们程序的质量往往并不能和他们的智商相提并论。中国有句老话叫“踏踏实实做事,认认真真做人”,本文不想提太多的时髦的软件工程理论,而只想就程序员的基本功——“编程”一一展开篇幅,让那些聪明的程序员从小事做起,从点点滴滴做起,写出更有用的程序。
本文着重讨论软件编程的艺术(“不要和我谈艺术”,谁说的?!),作为例子,本文将选取高结构化的C++语言作为实现语言。
本文部分内容参考《高质量程序设计指南——C++/C语言》(林锐 著)和Rational Unified Process文档《Java 编程指南》(Scott Ambler 著),感兴趣的读者可以和笔者联系。
0.1 何为“高质量的软件”——软件的质量属性
何为“高质量的软件”?一个功能性很强的软件并不一定高质量,同理,一个很厉害的程序员往往也不是“最好的”,“高处不胜寒”的程序员往往是最寂寞的,对于民族程序员群体来说,他们正如流星一样耀眼,但是他们也正如流星一样短暂、一样悲哀……
一个程序员的代码,不能为他人所读懂,不是一件光荣的事。这样的程序可读性也见一斑,更谈不上“高质量”了(可笑的是,总有这方面的“牛人”藉以自己“高深”的程序而自豪)。
软件的质量属性很多,以下是最突出的,也是最容易让人所理解的:
- 艺术性(artistry)。你的程序是否看起来很“美”?写起来、读起来是个什么滋味?是享受吗?
- 鲁棒性(robustness)。打个通俗的比方,把你的程序扔进-20℃的冰箱里,它会正常工作吗?会不会死机?
- 可用性(availability)。你的程序有用吗(当然有用,不然要编它干嘛?注意:这里只是相对别的应用和程序员而言)?别人拿到你的源码或二进制代码,能在此基础上做二次开发吗?
- 效率性(efficiency)。你的程序运行速度如何?快吗?
不管那些“高手”同意不同意,笔者认为,软件的高质量即至少应包含以下四个方面:
- 好的艺术性。即“美”。
- 强的鲁棒性。即“稳”。
- 好的可用性。即“有用”。
- 高的效率性。即“快”。
0.2 软件的质量平衡点
为什么不是“最美”、“最稳”、“最有用”、“最快”?原因很简单,没有“最好”。程序员很有必要在各个质量属性之间找到一个质量平衡点。
最快的程序,它的移植性(即对其他环境的兼容性)并不是很好;而最稳的程序,其效率往往是不是很显著。程序员将自己的代码过分地艺术化,就像花大部分的时间去装璜马桶,并不总是很划算的事。
以下的篇幅将告诉你如何正确地、合适地做好“编码的学问”。
《高质量程序设计指南——C++/C语言》(林锐 著)
《Java 编程指南》(Scott Ambler 著)