Python蕴涵的"软件工程"


Python作为一门语言,它集面向对象语言的强大、脚本语言的灵活于一身,同时跨越多个平台,从Windows到类Unix变种,再到OS/2,再到我们不熟悉的操作系统。它带着丰富的库,提供了开发软件原型的快捷。

至于语言的迷思,不想沉迷。在这里我想说说Python库所体现的坚实的软件工程理念。

Python提供了丰富的库,丰富意味着多,多了想一把抓就有点困难。其实不然,Python库所体现的结构,符合OSA。库说通俗一点讲,就是对开发人员提供服务。对于某一个特定的方面,Python库所提供的服务,体现为最多三个层次,“三层”,关键是这个“三层”。在《Code Complete》中倡导软件首要使命为控制软件复杂度,进而有[5-2, 5+2]原则,这真的是很有道理,不愧是作者多年来的心得体会。考虑到软件原型的快捷构件,Python库提供了贴近应用的库,同样有最底层的库,用于重新构建贴近应用的特定组件,如有必要提供中间库,我们可以发现,这三层最大的区别在于:它们所作用的抽象层次有递增或递减的关系,这样的层次符合“依赖倒置配置原则”。同时这三层之间没有显式的耦合性。细细品位,Python将GenVoca模型用于抽象层次,三层,真的做得很好很好!层层构建,但做到最小耦合度。

从宏观上看,Python库集多而不杂,错落有致,开发人员可以基于问题的层次。选择到具体库。所以说Python提供了软件开发原型的快捷,一点也不为过。

深入到一个具体的库或模块实现,那里体现的是深厚的软件工程理念。
在Python库的源码里,我看到了什么是真正的软件工程。作为一个模块,从注释的精准,到模块组件的划分组织,到异常体系的建立,到精简的对外接口,步步为营,留下的是高效健壮的服务组件。所有的这些,Python库为我们提供了很好的典范。
Python模块提供组件的同时,也有相关的函数。Python将类方法和函数分开看待,类有自身的内聚性,函数则提供类之外的访问,合情合理,提供了进入类的入口函数。