软件设计中的抽象层次

The programmers of old were mysterious and profound. We cannot fathom their thoughts, so all we do is describe their appearance.
远古时代的编程大师们高深莫测,我们不能揣测他们的所思所想,只能描述外表所见。

——《编程之道》

最近在项目中完成了一个数据访问设计,包含本地数据库、对象关系映射(ORM)和应用程序框架(Application FrameWork)。在设计和实现的过程中对软件设计的抽象的理解进一步加深。特将所得记于此,记之戒之。

变量名是数据的第一抽象

在早期我还在用C语言写程序的时候,教材用的是谭浩强的《C语言程序设计》。网络上对这总销量超过本书1000万册的的诟病不断,最大的问题就是变量的命名实在是很混乱,例程中的变量从来都是a、b、c、i、j、k……。现在回想起来变量名是什么啊,不就是对数据的抽象吗?变量名混乱就是抽象关系混乱。所以抽象的第一步就是要把变量名起好,先贤已经给我们留下了各种命名法,我好像窥探到他们这样做的初衷了。

The Tao gave birth to machine language. Machine language gave birth to the assembler.
道生机器语言,机器语言生汇编嚣。

——《编程之道》

数据库是软件工程中的规范化抽象

汇编语言中是没有变量名称的,高级程序设计语言中变量有了名称,有了第一次抽象,变量组合成结构体、类,为第二次抽象。变量及其组合(结构体、类)等价于数据库。工程中软件详细设计的第一步就是画实体关系(ER)图,然后将对象数据放到数据表中,数据表之间的关系表示实体对象之间的关系。数据库中表名和列名的命名法如前所述依然是第一抽象,数据库是软件工程中的规范化抽象。先贤留下了若干范式来规范数据库设计,需细细体会每种范式,根据复杂度选取合适范式。

对象关系映射为回归本真的抽象

ORM使冷冰冰的数据骨架上又长出了血肉,气血丰盈的对象方才是活生生的对象。ORM是解决面向对象与关系数据库存在的互不匹配的现象的技术。ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。

推荐给大家一本书:编程之道

欢迎访问我的个人博客:www.fiiii.com

posted @ 2013-05-11 23:03  njuxdj  阅读(746)  评论(1编辑  收藏  举报