开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

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:07990
用户头像

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

关注

评论

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

天润融通荣获2023 CEIA 中国企业IT大奖

天润融通

C# 使用模式匹配的好处,因为好用所以推荐~

EquatorCoco

C# C语言

天润融通荣膺亿欧2023WIA世界创新奖多项榜单

天润融通

如何借助Redis巧妙的管理用户签到?——Bitmap篇

左诗右码

redis'

天润融通新品上线:坐席知识推荐,让客服工作更轻松!

天润融通

人工智能

ETL数据集成丨通过ETLCloud工具,将Oracle数据实时同步至Doris中

RestCloud

oracle Doris 数据同步 ETL ETLCloud

国内外API平台对比:RapidAPI、聚合数据、API云市场、幂简集成

幂简集成

API API工具

⾯向现代分层存储的 Caching 技术漫谈|Data Infra 研究社第十九期(含资料发布)

Databend

在矿山“土壤”种植大模型,云鼎科技向产业狂奔这一年

脑极体

AI

酷克数据出席 2024 可信数据库发展大会 存算分离架构驱动电信行业数据平台革新

酷克数据HashData

Altair 首席技术官:数据分析和人工智能平台帮助企业创造更好、更安全、更可持续的产品

Altair RapidMiner

人工智能 算法 数据分析 altair

从基础到高级应用,详解用Python实现容器化和微服务架构

快乐非自愿限量之名

Python 微服务 容器化

客户在哪儿AI的企业全历史行为数据与企业信息查询平台上的数据有何区别

客户在哪儿AI

ToB营销 ToB获客 ToB增长 ToB销售 大客户营销

云手机解决海外社媒风控问题

Ogcloud

云手机 海外云手机 跨境云手机 云手机推荐 海外社媒运营

CSS:弹性布局(display:flex)

不在线第一只蜗牛

CSS 前端 布局

2024年,是该掌握双拼打字的时候了!

左诗右码

@所有人,2024华为ICT大赛基础软件实践训练营来了!时间有限,别错过!

轶天下事

阿里发布革新的音频多模态模型 Qwen2-Audio;月之暗面回应大模型显示「9.11 大于 9.9」丨 RTE 开发者日报

声网

新MacBook到手时,建议你需要做的事情(二)

左诗右码

Mac

使用 Hugo 快速搭建一个云博客系统

左诗右码

Hugo

PDF如何一键转PPT?办公必备的2个在线工具推荐!

彭宏豪95

人工智能 PPT 办公软件 AIGC AI生成PPT

NVIDIA GPU 监控观测最佳实践

观测云

gpu

时序数据库如何选型?详细指标总结!

Apache IoTDB

“人本科技,智慧生活”,ARROW箭牌持续加码数智健康卫浴领域

新消费日报

新MacBook到手时,建议你需要做的事情(一)

左诗右码

Mac

大模型评测技术研讨会暨国际标准IEEE P3419第二次工作组会议成功召开

智源研究院

活动报名丨智源研究院与行业数据应用Workshop

智源研究院

为什么StampedLock会导致CPU100%?

王磊

Java

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