`
找不着北
  • 浏览: 315318 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

面向对象并不是目的

阅读更多

我经常会读到或听到有人说一些“这个和那个不是正确的面向对象”,或“… 面向函数”,或诸如此类的言论。我以前也会发表这样的言论——当我刚从大学出来的时候。这种的观点在昨天这里发表的一篇名为”what we don’t need in object oriented programming“里也体现了出来。

后来,在现实世界中,我知道了这真正的事实:

我们开发软件并不是为了让它面向对象化,或遵循其它的模式。

我们开发软件是为了解决问题。

每一种编程模式(OO, FOP, AOP 等)都擅长于解决某一特定类型的问题,但没有一个——我个人认为——是全能的。所以,我觉得很幸运能有那么多的工具和语言概念来供我们选择,而不是限定于一种。用什么样的工具和什么样的思想,这依赖于我们要解决的问题的类型。

例如,现在已经是2010年了,为什么Java里仍然没有无符号基本数据类型?如果我必须对字节进行操作,那就麻烦了。为什么我们对使用什么样的基本类型的没有选择余地呢?

相同的思路,为什么Scala里只有对象类型?如果我要开发的某种软件是用来操作二进制数据的,我可不希望Scala在屏幕后面为我做什么优化。我 希望自己能掌控它。如果我需要在大量的二进制数据上进行字节操作,这就有问题了,Scala的基本类型是常量化的吗?于是,每一次操作我都要创建一个类型 实例?汗颜。

通常,当有些很精明的程序员对我的做法说三道四,却又根本不知道我是在解决什么问题时,我很苦恼。这就像是在说“我比你更知道你需要什么,所以我们 不能用这个、那个工具/风格/架构”。但事实却是,这些精明的思想家并不是更知道对于每个开发人员,什么样的工具或思路才是他们解决相应的问题所需要的。 做个类比,这个极其类似那些精明的政治家宣传自己最知道人们究竟应该怎么活着…

总结一下:我们开发软件是来解决问题的,只要能把问题正确的解决,它就是“正确”的方式。目前,看起来真正能够做到这一点的编程语言阵营只有C#团 队。我是个有11年Java编程史的Java迷,这样说我也很受伤。但他们对于我来说就是这样,这些C#的语言设计者真正的懂得这样的事实:我们没必要一 定强迫自己使用某种模式,我们要自己给出选择。

 

 

 

翻译来源:外刊IT评论

 

 

:-)

分享到:
评论
13 楼 zwtlong 2010-10-27  
在现实开发中,一般都是以实现需求为主,太少全部都是以面向对象思想设计的
12 楼 雪飘寒 2010-10-27  
linliangyi2007 写道
认为面向对象是目的的,那是知其然不知其所以然!!

楼主的使用主义有的可怕啊,不能说错,但很容易误导人哦!!

不要觉得能把功能实现就ok了,这样太危险。。。

需要考虑系统设计的耦合度,扩展性,程序的易维护性,易读性等等。

说的非常对,只为了实现功能, 不考虑别的,有时候写完的代码自己都不认识。
11 楼 gogole_09 2010-10-27  
linliangyi2007 写道
认为面向对象是目的的,那是知其然不知其所以然!!

楼主的使用主义有的可怕啊,不能说错,但很容易误导人哦!!

不要觉得能把功能实现就ok了,这样太危险。。。

需要考虑系统设计的耦合度,扩展性,程序的易维护性,易读性等等。


赞一个,总结得很精辟,
   软件行业的潜规则是需求总是会变化, 一个软件在满足基本功能的情况下,可维护性是排第一位的,面向对象也仅仅是实现这一目的的手段而已。(细看很多面向对象的法则,其出发点也是为了解决可维护,可扩展性问题)
10 楼 rocwon 2010-10-26  
找对象不是目的,目的是娶妻生子
9 楼 xiaobing 2010-10-26  
是的,用面向对象解决一些问题,当然也有面向对象解决不了的问题
8 楼 笑我痴狂 2010-10-26  
linliangyi2007 写道
认为面向对象是目的的,那是知其然不知其所以然!!

楼主的使用主义有的可怕啊,不能说错,但很容易误导人哦!!

不要觉得能把功能实现就ok了,这样太危险。。。

需要考虑系统设计的耦合度,扩展性,程序的易维护性,易读性等等。


支持  精辟
7 楼 hatedance 2010-10-26  
OO不是目的,赚钱养家糊口才是目的
6 楼 gtssgtss 2010-10-26  
到处都是OO?我觉得到处都没有OO,那么多用spring的,怎么OO
5 楼 VincentHere 2010-10-26  
确实,人总是很容易走极端, 有了OO,就什么都要OO, OO里面不还是要面向过程, 过程式的永远不可或缺
4 楼 bat0906 2010-10-26  
现在在再谈面向对象也没啥意思了~ 那些大公司就是看不贯微软独霸天下~
整的现在写个东西,就得装个处女机~ 谷歌乐了,甲骨文乐了~
3 楼 linliangyi2007 2010-10-26  
认为面向对象是目的的,那是知其然不知其所以然!!

楼主的使用主义有的可怕啊,不能说错,但很容易误导人哦!!

不要觉得能把功能实现就ok了,这样太危险。。。

需要考虑系统设计的耦合度,扩展性,程序的易维护性,易读性等等。
2 楼 真爱无敌 2010-10-26  
我们开发软件并不是为了让它面向对象化,或遵循其它的模式。

我们开发软件是为了解决问题。

---楼主所说这个我很赞同

但是现在软件开发也讲究方法,而不是单纯的解决问题。

面向对象在一定程度上能够将问题简化,能够更好的解决问题,何乐而不为呢?

当然也不是说碰到所有问题马上就想到面向对象化,要根据实际的软件项目来决定。

呵呵~
1 楼 化蝶自在飞 2010-10-26  
支持一下,实用主义.

相关推荐

    面向对象七大原则

    面向对象七大原则 面向对象编程是一种编程范式,它强调模块化、抽象化、封装性、继承性和多态性等特点。面向对象编程的七大原则是指在面向对象设计中所遵循的七个基本原则,它们是:开闭原则、依赖倒转原则、单一...

    经典面向对象思想 经典面向对象思想

    封装是面向对象编程的一个基本特性,其主要目的是隐藏对象内部的实现细节,并对外提供一组清晰的操作接口。通过封装,我们可以限制外部对对象内部状态的访问,从而增强代码的安全性。例如,在Java中,可以通过...

    面向对象设计原则.ppt

    例如,对于计算员工工资的问题,传统的结构化做法可能会导致大量重复代码,而采用面向对象设计,我们可以通过创建不同的员工类并让它们继承自抽象的`Employee`类,将薪金计算的责任分配给各自对应的类。这样,当需求...

    c++面向对象程序设计语言重点难点复习题及答案.doc

    面向对象程序设计是C++的核心特性之一,它包括类、对象、封装、继承、多态等概念。在C++中,面向对象编程提供了强大的抽象能力,使得程序员可以更有效地管理和组织代码。 首先,我们来看看一些关于C++面向对象的...

    面向对象学习笔记

    ### 面向对象学习笔记 #### PHP5面向对象基础 **1.1 类和对象** 面向对象编程(Object-Oriented Programming, OOP)是一种软件开发范式,其核心思想是将现实世界中的事物抽象成类(Class),然后根据类创建具体的...

    《C#面向对象设计模式纵横谈》.pdf

    ### C#面向对象设计模式知识点解析 #### 面向对象设计模式与原则 ...然而,设计模式并不是万能的,它们不是简单地可以套用的模板,而是需要在理解面向对象基本原理的基础上,根据具体问题灵活运用的工具。

    面向对象程序与设计作业 实验二实验报告.doc

    【实验报告】 实验题目:面向对象程序设计——继承性实现 实验目的: 1. 理解并掌握C++中的...以上就是本次面向对象程序设计实验的报告,涵盖了实验的目的、内容、调试和总结,展示了C++中面向对象编程的基本实践。

    面向对象软件工程(使用UML,模式与Java)全套课后习题

    在面向对象软件工程的学习和实践中,理解建模的目的、编程语言在软件开发中的作用、知识获取的非顺序性以及设计决策背后的合理性是至关重要的知识点。 建模的目的是通过构建一个简化的现实世界的表示,以减少复杂性...

    面向对象的程序设计心得.pdf

    封装(Encapsulation)是面向对象程序设计的一个原则,它指的是将数据(属性)和行为(方法)捆绑在一起,形成一个独立的单元,并通过对外提供的接口与外界进行交互。封装的目的是隐藏对象的内部状态,只能通过指定...

    南京理工大学Java面向对象编程作业源码

    这个文档可能涵盖了实验目的、步骤、代码分析或问题解答等内容,对于理解Java面向对象编程的概念和实践非常有帮助。不过,具体的文件内容无法在此处提供,需要下载后查看。对于学习者来说,通过分析和理解这些源码,...

    面向对象核心技术.pdf

    面向对象编程(OOP)是目前软件开发中广泛使用的一种编程范式,它具有封装、继承和多态三个核心特性。在OOP中,类是创建对象的模板,继承则是实现类之间关系的一种机制。多态则提供了使用相同方法名调用不同方法的...

    面向对象的一些基本概念

    本文将深入探讨面向对象编程的一些基本概念,包括类、对象、继承、属性、方法、静态、重载、隐藏、重构、声明、定义、初始化、赋值等,并通过 Java 语言进行阐述,同时也会简要提及 C++ 中的相关概念。 #### 二、...

    面向对象设计原则

    本文将详细介绍面向对象设计的七大原则,并结合具体案例进行解析。 ### 面向对象设计原则概述 面向对象设计原则是在软件设计阶段必须遵守的一套规则,它们能够帮助开发者构建出更易于理解、修改和扩展的系统。这些...

    面向对象c++题库 答案

    ### 面向对象C++知识点详解 #### 第一章:面向对象基本概念 ##### 1. 面向对象程序设计方法的基本特征 - **抽象性**:指从现实世界中提取出对象的主要特征,忽略不必要的细节。例如,当我们讨论汽车时,关注的是...

    c#开发模式-面向对象

    ### C#开发模式—面向对象:深入探讨Strategy策略设计模式 #### 一、引言 在软件开发领域,面向对象编程(OOP)是一种广泛采用的方法论,它通过将数据和处理数据的方法组织在一起,形成对象,来提高代码的可重用性、...

    BREW与面向对象的比较.pdf

    本文将详细探讨BREW与面向对象编程之间的差异,并着重于它们在类与接口支持、封装性、继承性以及多态性等方面的比较。 #### 二、详细比较 ##### 1. 类与接口的支持 - **面向对象语言**:C++、C#和Java等语言提供...

    面向对象设计原则.pdf

    ### 面向对象设计原则详解 面向对象设计原则是一系列指导软件开发人员构建高质量、易于维护和扩展的软件系统的准则。这些原则旨在帮助开发者创建更健壮、更灵活的系统,减少代码间的耦合度,并提高代码的重用性和...

Global site tag (gtag.js) - Google Analytics