三九宝宝网宝宝百科宝宝知识

OO方法的本末倒置

12月10日 编辑 39baobao.com

做为一种软件设计的思想,OO为我们理解软件和现实世界的同构关系提供了革命性的方法。通过将类属关系引入软件系统,为解决现实世界的问题提供了顺理成章的角度。

但问题也随之出现了。在使用OO方法进行软件工程时,人们又碰到了诸多问题。为了解决这些问题,又产生了诸多的方法,新的概念层出不穷。

OO方法的本质, 是将现实中存在的各种概念,抽象为类属关系,并映射到软件系统中。让我们仔细想一想,这有什么不对劲的地方吗?

回答是有的。

让我们考虑一下软件在需求阶段的场景,关于系统的运作,我们在头脑中已经有了一些模糊的概念,这些概念在讨论中从模糊到清晰,于是我们尝试将这些概念分离出来,抽象,为即将开始的开发工作确定工作的基础,一些类属关系,一些运行流程。且慢,为什么我们一开始得到的这些概念就是对的呢?现在大家都知道了,这些概念不一定是对的,但我们可以在不断的重构中逼近正确。

好了,当我们正在逼近的正确的时候,也就是不断重构的时候,不管你玩什么花俏的东西,在任一时刻,系统中始终会存在一个的类属关系, 这是OO系统的天条。考试,大提示我们只能站在这个的角度,去观看我们的系统,别的角度不存在。

问题来了,OO方法不允许概念混乱,但在开发过程中,在重构期间,我们的概念其实经常是错乱的,这种错乱,对于工程性项目而言,可以一直延续到工程结束,不去解决它。现实中,转换场景与看问题的角度,一些概念就有了微妙的差别。

也许你要说,不允许概念错乱,这难道不好吗?但人类的思维方式,并不是用OO方法可以完整对应的。这就是问题的所在,为什么我们经常要采用无法形式化的所谓”错乱“的思维方式,是因为这样更清楚,更省力,更符合我们的思维习惯,更利于我们的沟通。在理想化的最终的软件中,我们会逐步消除这种错乱,形成一致性的体系。但这是软件开发的最终结果,在中间过程,我们并不一定要遵循它。

最后的结论也呼之欲出,OO方法的问题是本末倒置的,它将本来应该是放在最后的逻辑一致的概念体系当作了前提,并强迫开发者时刻遵循。造成的结果是,无法容纳人性化的思维方式,容纳横看成岭侧成峰的思维技巧。在重构过程中,用严谨的OO方法去实现本来错乱的概念,只会得到更加凌乱的程序结构。方法是,正视并容纳这种错乱,实现所想及所写,直面脑海中概念的软件开发过程。

推荐阅读
图文推荐