技术开发 频道

面向对象编程就一定是正确的?

    【IT168 分析评论】当我们使用一个工具很长时间以后,我们通常会习惯它,会使用它的方式来思考问题,而不是使用它来帮助物化我们的思维。大多数情况下这不是一件好事。

    当我们在大学的时候,我们就被告知要学会面向对象编程(OOP),即使函数式程序设计听起来非常酷,你却从不敢放心的在真实生活中使用。我们被告知动态语言对脚步编程非常适合,不过它太慢一直于不能应用在真实生活中的项目。慢慢的我们开始相信了这些事情。

    所有这一切在继续发生,直到几年前我参加了了来自Alexandar Stepanov的培训,我才认识到思维定势是不对的。他被认为称为通用编程之父,也是C++标准模版库(STL)的关键人物之一。比较有意思的是,他在培训中嘲笑了面向对象编程的整个前提-所有一切都是对象。他的观点是计算机技术是由数据应用算法组成的。因此算法应该放在首要位置,它才是编程的关键部分。他建议按照算法来思考问题,而不是按照对象。假若你曾经使用过C++的标准模版库,你可能已经注意到这一点。STL的整体并不是面向对象的。它讨论的是容器应用算法。STL代码看上去更像sort(v.begin(),v.end());而不是像在面向对象系统中所预期的那样:v.sort()。

    感兴趣的读者,我强烈建议您看一下这篇文章中他的观点。

    面向对象系统常常频繁的使用雇员、雇主、汽车和动物的例子来教给大家。我认为这些例子更适合于企业应用中。假若你在编写一个内核程序或正在写一个测试组件,对象可能没有什么实际意义。

    随着我开始认真的使用函数式程序设计和动态语言来编写代码,我使用的它们越多,就越发感觉到它们使用起来是那么自然。

    原文链接:http://blogs.msdn.com/abhinaba/archive/2006/12/21/is-object-oriented-programming-good.aspx

0
相关文章