面向对象并不是必要的

 
程序开发并非一定要面向对象不可,面向对象是一种方式,但是不是唯一的方式,这种方式很多时候有用,不代表任何时候都是最高效的,更不是唯一的真理。
 
面向对象将相关的状态属性和操作方法放在一个实体中,起到了归类和分而治之的作用。
 
对于一个系统来说,这个是最根本的方法。但是面向对象的分而治之并不完美。面向过程也有分而治之的思想和能力,这就是模块开发。对象是复杂的,他有生命过程,有复制克隆的需要,有保持状态的需要,他是一个复杂的实体。而很多时候我们不需要这么多的东西,而只要一个函数,一个过程,一个状态。
 
第二个,面向对象的类型系统非常复杂。
 
第三个,面向对象的封装不彻底,默认的实践是接口和实现同为一个对象实体,如果要分离处界面和实体就显得难以编程。
 
程序开发的技巧是:简单明了,分而治之,抽象化编程。
 
面向对象在这三个方面都有违反的表现,比如如果建立多个对象,对象间的相互关系变得非常复杂。程序员需要掌握非常多得实体概念。
 
分而治之就是面向对象对界面的分离和封装上没有做到很严格。没有一个系统的解决方案。父类对子类的影响,对象直接都是直接操作。
 
抽象化并不是面向对象的专利,比如unix系统的文件就是典型的非面向对象的抽象。抽象是算法的范畴,一个出色的算法,必然高度抽象他操作的对象,让算法适应更多的场合,而对象的类型系统反而会限制了抽象。
 
 
 
posted @   诺贝尔  阅读(576)  评论(1编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示