模式这个概念被广泛使用。一位仁兄的文章中说,国外已经把模式这个概念推向日常生活中的许多领域。具体情况怎么样,我没有机会去考证,但是从西方人崇尚务实的精神推测,我想出现这种势头很合理。
我理解,模式是一种归纳整理已有经验的方式。比如设计模式,就系统整理了一些通用幽雅的设计经验。
作为程序员,”掌握某种技术”和”能合理地使用该技术解决实际问题”并不是一回事。前者偏向理论,后者侧重实践。前者得到人们的一致重视,而后者一直被忽略。我参与的项目中,经常出现这种情况,新加入项目组的程序员得不到这方面的培训,需要自己花费很大的精力来寻找使用特定技术实现特定应用的方式。这样降低了开发效率,使程序代码晦涩难懂,可读性差,而且代码隐藏BUG的几率大,影响了系统的稳定性和质量。而项目中经验丰富的程序员和编程高手们,掌握了大量的经验,但是这些经验都是个人技巧,很少拿出来交流。这种状况使高手们的编程方式各不相同,所以他们编写的代码可读性也不高。而且由于缺少系统的交流和整理,高手们的编程模式也难免存在一些不尽合理的地方,甚至可能潜伏了一些影响系统稳定性的错误步骤。我觉得有必要把这个问题提出来和大家讨论,论题就叫编程模式,希望能引起大家的关注。
把编程模式定义为:合理地使用特定技术解决实际问题的经验。编程模式这个概念应该被明确地提出来,在程序员间系统地交流、讨论、整理。每个项目组在编码之前,都可以归纳出一组针对自己开发环境的编程模式,要求程序员参考这些模式进行编码,质量检查人员以这些模式为标准进行质量检查。当然编程模式需要不断地补充和完善,这个不断改进的过程需要项目组所有人员的共同智慧。关注这个问题,我们的软件代码的质量和可读性将大大提高。我们就可以在软件开发水平上迈出踏踏实实的一步。
现在常被我们挂在嘴边的一个话题就是“印度软件业”,有人说它好,有人骂他烂,不过印度软件既然被国际社会承认,我想它在质量上应该还过得去。静下心来比较一下,印度和我们的主要区别之一在于软件业的基础——程序员。让一群印度程序员用同一种编程语言解决同一个问题,会发现他们的程序几乎一模一样,变量命名、程序结构、处理思路等就象是抄袭下来的,可以说他们在使用相同的编程模式。站在软件工程的角度看,所有的程序员都以相同的编程模式作为模板编码,是保证代码质量的一条途径,毕竟所有的软件系统都是建立再代码之上的,基础不牢,上层建筑再花哨也没有用。软件工程是一个侧重应用和实践的领域,国外的工程方法更多地来自实践经验,所以可操作性很强。但是传到国内以后就变味了,许多人更愿意把它抽象成纯理论去研究,最后出来的理论,只能看,不好使。
这或许还涉及到一个心态的问题,业内的气氛比较浮,有点急功近利。关注软件开发的基础问题,相信可以提高个人和整体的水平。