我为各种应用程序编写了大量代码。虽然替代子类型在应用程序中发挥了重要作用,但这些情况相当特殊。总的来说,尽管人们口头上经常谈论“重用”,但现实是,除非一段代码 完全 满足您的需求,否则很难进行成本效益的“重用”。设计可扩展类以正确方式非常困难,因此扩展的成本通常非常高,以至于“重用”根本不值得。
在许多方面,这并不让我感到惊讶。现实世界并不是“OO”,而OO中隐含的思想——我们可以通过某种分类法来对事物进行建模——在我看来非常基本上存在缺陷(我可以坐在桌子上、树桩上、汽车引擎盖上、别人的膝盖上,但没有一个是椅子)。即使我们转向更抽象的领域,OO建模通常也很困难、反直觉且最终没有帮助(考虑圆/椭圆或正方形/矩形的经典例子)。
那么,我错过了什么?OOP的价值在哪里,为什么所有时间和金钱都未能使软件变得更好?