QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

OOP:超脱动词 / 名词隐喻,完成更好的设计

  • 2007-11-07
  • 本文字数:894 字

    阅读完需:约 3 分钟

为了表达面向对象编程,对象常常被看作是“名词”,而确定其行为的动作则被看作是“动词”。这些“动词”一般被实现为方法,即系统地与“实施”动作的对象联系起来。在近期的一篇博客文章中, Reg Braithwaite 指出,“有两方面,一是主动方的实体应该拥有该动词的定义;二是被动方的实体不应该拥有该动词的定义,然而并非所有的‘动词’都能清楚地区分两者”。Braithwaite 举出的一些交互操作就属于这样的情况,例如将动词联系到对象身上可能导致“代码重复和信息外泄”。他认为可能有必要将一些动词与名词相脱离,并将之提升到与名词相同的抽象层次:

有些动词从属于名词,但也许有些动词独立自主会更好?比如 + 和 <=> 之类?真应该把它们从对象的奴役下解放出来,应该让它们有自己的定义。

Buko Obele 对动词 / 名词隐喻的正当性提出了质疑。他认为,与真正的动词和名词不同,对象和方法不能彼此独立:

“人”这个词放在句子中并不依赖于任何一个动词 [……]。在现实中我们并不会说一个不能“跑”的人不是一个人 [……]。在面向对象设计中,概念根本不能脱离它们的方法而存在——相反,对象严格地由它们的方法所构成,这正是面向对象的要旨。

而且,在现实的语言中使用隐喻会令“主语和动词以及其它句法关系”产生混淆,从而“产生出全新的概念”,“语言卓绝的创造力量”即源于此。但在编程中是没有隐喻的。因此,对象仅仅是一个非常狭窄的概念,它与其它概念结合在一起“以表达出对一个问题的解答”。

虽然 Buko Obele 认为应该超脱出动词 / 名词的想象,但他与 Braithwaite 的结论却殊途同归,两者都对传统的 OOP 方法提出疑问。一方面 Braithwaite 提出了分离动词与名词的一些想法,另一方面 Obele 则提倡注重他认为是不可避免的软件设计主题,“无论使用的是对象、函数还是 DSL,甚至伟大的 Lisp”:

动词“属于”谁这个问题本身就是错误的;真正的问题是一个新概念如何有意义地加入到我们现有的系统中。 [……]

名词、动词这类说法在一开始是有用的,但最终你还是要深入地思索,使出你在抽象化方面的本事,才能描述一个不那么粗浅的系统。

查看英文原文: OOP: Thinking beyond verb/noun metaphor to yield a better design

2007-11-07 09:071028
用户头像

发布了 225 篇内容, 共 67.0 次阅读, 收获喜欢 51 次。

关注

评论

发布
暂无评论
发现更多内容

亚马逊运营广告秘籍:探究高效营销之道

科普小能手

数据挖掘 数据分析 跨境电商 API 接口 亚马逊运营

数字货币支付系统开发搭建:构建未来的区块链支付生态

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

2024年加密市场的突破与展望:以太坊与Solana的崛起

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

揭秘如何用Monaco Editor打造功能强大的日志查看器

袋鼠云数栈

用友BIP联合华为完成鲲鹏原生开发技术认证,加速信创发展!

用友BIP

华为 用友 华为鲲鹏 企业数智化 用友BIP

a16z:小模型 + 边缘 AI 将定义 2025;音效模型 TangoFlux:3 秒钟生成 30 秒音频丨RTE 开发者日报

声网

自主可控,体验跃升丨恒拓高科亮相“HDD·广东鸿蒙生态伙伴论坛”

BeeWorks

直播预告丨社区年度交流会& 《RTE 和 AI 融合生态洞察报告 2024》发布

声网

【连载 09】atomic包原子类

FunTester

cn域名注册怎么注册,注册cn域名需要哪些条件和流程?

国科云

40% 降本:多点 DMALL x StarRocks 的湖仓升级实战

StarRocks

AI+Data:AI时代的企业数据治理

合合技术团队

数据治理 数字化 #人工智能 #大数据

日志聚类算法 Drain 的实践与改良

观测云

日志 聚类算法

OpenNJet v3.2.0正式发布

通明湖

做TikTok直播可以选择哪些网络方案?

Ogcloud

海外直播专线 tiktok直播专线 tiktok直播网络 tiktok直播加速 tiktok直播网络方案

非凸科技再次斩获多项行业殊荣,感谢认可

非凸科技

大佬带你一周刷完Java面试八股文,比刷视频效果好多了

Summer

Java 程序员 面试 架构师 大厂

一颗光谱芯片的AI辉光

脑极体

AI

吕军教授实录2:重症数据挖掘研究思路分享

ModelWhale

人工智能 大数据 医工融合

TikTok直播限流是否与网络线路有关?

Ogcloud

海外直播专线 Tik Tok直播 tiktok直播 tiktok直播专线 tiktok直播网络

集成服务

flfljh

说出与 IoTDB 的故事:温暖有你,祝福有礼!

Apache IoTDB

奋进2025 | 用友BIP乘风破浪,大有可为!

用友BIP

用友 企业数字化 用友YonBIP 企业数智化 用友BIP

JVM实战—如何分析jstat统计来定位GC

不在线第一只蜗牛

JVM

2000道面试必问的Java面试八股文及答案整理(2025版)

Summer

Java 程序员 面试 大厂 八股文

OOP:超脱动词/名词隐喻,完成更好的设计_架构_Sadek Drobi_InfoQ精选文章