我经常会读到或听到有人说一些“这个和那个不是正确的面向对象”,或“…
面向函数”,或诸如此类的言论。我以前也会发表这样的言论——当我刚从大学出来的时候。这种的观点在昨天这里发表的一篇名为”what we don’t
need in object oriented programming“里也体现了出来。
后来,在现实世界中,我知道了这真正的事实:
我们开发软件并不是为了让它面向对象化,或遵循其它的模式。
我们开发软件是为了解决问题。
每一种编程模式(OO, FOP, AOP 等)都擅长于解决某一特定类型的问题,但没有一个——我个人认为——是全能的。所以,我觉得很幸运能有那么多的工具和语言概念来供我们选择,而不是限定于一种。用什么样的工具和什么样的思想,这依赖于我们要解决的问题的类型。
例如,现在已经是2010年了,为什么Java里仍然没有无符号基本数据类型?如果我必须对字节进行操作,那就麻烦了。为什么我们对使用什么样的基本类型的没有选择余地呢?
相同的思路,为什么Scala里只有对象类型?如果我要开发的某种软件是用来操作二进制数据的,我可不希望Scala在屏幕后面为我做什么优化。我
希望自己能掌控它。如果我需要在大量的二进制数据上进行字节操作,这就有问题了,Scala的基本类型是常量化的吗?于是,每一次操作我都要创建一个类型
实例?汗颜。
通常,当有些很精明的程序员对我的做法说三道四,却又根本不知道我是在解决什么问题时,我很苦恼。这就像是在说“我比你更知道你需要什么,所以我们
不能用这个、那个工具/风格/架构”。但事实却是,这些精明的思想家并不是更知道对于每个开发人员,什么样的工具或思路才是他们解决相应的问题所需要的。
做个类比,这个极其类似那些精明的政治家宣传自己最知道人们究竟应该怎么活着…
总结一下:我们开发软件是来解决问题的,只要能把问题正确的解决,它就是“正确”的方式。目前,看起来真正能够做到这一点的编程语言阵营只有C#团
队。我是个有11年Java编程史的Java迷,这样说我也很受伤。但他们对于我来说就是这样,这些C#的语言设计者真正的懂得这样的事实:我们没必要一
定强迫自己使用某种模式,我们要自己给出选择。
翻译来源:外刊IT评论
:-)
分享到:
相关推荐
面向对象七大原则 面向对象编程是一种编程范式,它强调模块化、抽象化、封装性、继承性和多态性等特点。面向对象编程的七大原则是指在面向对象设计中所遵循的七个基本原则,它们是:开闭原则、依赖倒转原则、单一...
封装是面向对象编程的一个基本特性,其主要目的是隐藏对象内部的实现细节,并对外提供一组清晰的操作接口。通过封装,我们可以限制外部对对象内部状态的访问,从而增强代码的安全性。例如,在Java中,可以通过...
例如,对于计算员工工资的问题,传统的结构化做法可能会导致大量重复代码,而采用面向对象设计,我们可以通过创建不同的员工类并让它们继承自抽象的`Employee`类,将薪金计算的责任分配给各自对应的类。这样,当需求...
面向对象程序设计是C++的核心特性之一,它包括类、对象、封装、继承、多态等概念。在C++中,面向对象编程提供了强大的抽象能力,使得程序员可以更有效地管理和组织代码。 首先,我们来看看一些关于C++面向对象的...
### 面向对象学习笔记 #### PHP5面向对象基础 **1.1 类和对象** 面向对象编程(Object-Oriented Programming, OOP)是一种软件开发范式,其核心思想是将现实世界中的事物抽象成类(Class),然后根据类创建具体的...
### C#面向对象设计模式知识点解析 #### 面向对象设计模式与原则 ...然而,设计模式并不是万能的,它们不是简单地可以套用的模板,而是需要在理解面向对象基本原理的基础上,根据具体问题灵活运用的工具。
【实验报告】 实验题目:面向对象程序设计——继承性实现 实验目的: 1. 理解并掌握C++中的...以上就是本次面向对象程序设计实验的报告,涵盖了实验的目的、内容、调试和总结,展示了C++中面向对象编程的基本实践。
在面向对象软件工程的学习和实践中,理解建模的目的、编程语言在软件开发中的作用、知识获取的非顺序性以及设计决策背后的合理性是至关重要的知识点。 建模的目的是通过构建一个简化的现实世界的表示,以减少复杂性...
封装(Encapsulation)是面向对象程序设计的一个原则,它指的是将数据(属性)和行为(方法)捆绑在一起,形成一个独立的单元,并通过对外提供的接口与外界进行交互。封装的目的是隐藏对象的内部状态,只能通过指定...
这个文档可能涵盖了实验目的、步骤、代码分析或问题解答等内容,对于理解Java面向对象编程的概念和实践非常有帮助。不过,具体的文件内容无法在此处提供,需要下载后查看。对于学习者来说,通过分析和理解这些源码,...
面向对象编程(OOP)是目前软件开发中广泛使用的一种编程范式,它具有封装、继承和多态三个核心特性。在OOP中,类是创建对象的模板,继承则是实现类之间关系的一种机制。多态则提供了使用相同方法名调用不同方法的...
本文将深入探讨面向对象编程的一些基本概念,包括类、对象、继承、属性、方法、静态、重载、隐藏、重构、声明、定义、初始化、赋值等,并通过 Java 语言进行阐述,同时也会简要提及 C++ 中的相关概念。 #### 二、...
本文将详细介绍面向对象设计的七大原则,并结合具体案例进行解析。 ### 面向对象设计原则概述 面向对象设计原则是在软件设计阶段必须遵守的一套规则,它们能够帮助开发者构建出更易于理解、修改和扩展的系统。这些...
### 面向对象C++知识点详解 #### 第一章:面向对象基本概念 ##### 1. 面向对象程序设计方法的基本特征 - **抽象性**:指从现实世界中提取出对象的主要特征,忽略不必要的细节。例如,当我们讨论汽车时,关注的是...
### C#开发模式—面向对象:深入探讨Strategy策略设计模式 #### 一、引言 在软件开发领域,面向对象编程(OOP)是一种广泛采用的方法论,它通过将数据和处理数据的方法组织在一起,形成对象,来提高代码的可重用性、...
本文将详细探讨BREW与面向对象编程之间的差异,并着重于它们在类与接口支持、封装性、继承性以及多态性等方面的比较。 #### 二、详细比较 ##### 1. 类与接口的支持 - **面向对象语言**:C++、C#和Java等语言提供...
### 面向对象设计原则详解 面向对象设计原则是一系列指导软件开发人员构建高质量、易于维护和扩展的软件系统的准则。这些原则旨在帮助开发者创建更健壮、更灵活的系统,减少代码间的耦合度,并提高代码的重用性和...