2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

拥抱AI生产力,天润融通致敬每一位AI的老师

天润融通

以太坊ABI解析器零尺寸类型漏洞分析与利用

qife122

区块链 以太坊

新签约 | Oracle 慢到拖垮查询?江西水投换上 TDengine 时序数据库秒回实时监控

TDengine

tdengine 时序数据库 国产时序数据库

flink on k8s的基本介绍

天翼云开发者社区

大数据

阿里云可观测 2025 年 8 月产品动态

阿里巴巴云原生

阿里云 云原生 可观测

一文读懂电子看板管理:生产看板到底管什么?看什么?

万界星空科技

制造业 mes 可视化数据 电子看板 数字大屏

当智能机器人说”黑哥们语言是不通的“,作为开发者的你该如何应对?

老纪的技术唠嗑局

插件 #OceanBase 向量化

基于 Databend 的实时数据汇聚平台建设

Databend

服装智能制造软件平台(源码+文档+讲解+演示)

深圳亥时科技

开源‘

时序数据库 Apache IoTDB V1.3.5 发布|优化加密算法,优化内核稳定性,修复社区反馈问题

Apache IoTDB

活动预告|天润融通走进亚马逊云科技,用Agent打造客户服务新型竞争力

天润融通

欲穷千里目,它凭什么能问鼎存力之巅?

脑极体

AI 存储

开源能源管理系统的进击:从“免费替代”到“创新引擎”

开源能源管理系统

开源 开源能源管理系统

Comate Agents成团出道,来Pick你的最强C位!

Comate编码助手

前端 Agents Agentic AI vibe coding

网易伏羲亮相Arm Unlocked 2025,携手Arm探索中国人工智能创新之路

网易伏羲

人工智能 arm 网易伏羲 游戏AI 永劫无间

低代码正在悄悄颠覆企业数字化

伤感汤姆布利柏

GOSIM HANGZHOU 2025即将揭幕,华为云云原生团队精彩议题抢鲜

华为云原生团队

云计算 容器 云原生 Volcano kubeedge

重塑云上 AI 应用“运行时”,函数计算进化之路

阿里巴巴云原生

阿里云 云原生 函数计算

向量检索技术优化步骤详解——游戏公司智能客服与推荐系统落地OceanBase

老纪的技术唠嗑局

游戏 #OceanBase 向量化

Flink 与Flink可视化平台StreamPark教程(CDC功能)

天翼云开发者社区

大数据 flink

Flink 与Flink可视化平台StreamPark教程(时间相关 1)

天翼云开发者社区

大数据 flink 计算

爱玛集团:All In SelectDB 构建极速统一数据平台,领航 AI 数智化实践

SelectDB

人工智能 数据库 实时数仓 MCP 爱玛电动车

MyEMS在行动:揭秘开源能源管理系统如何重塑工业与楼宇的能效未来

开源能源管理系统

开源 能源管理系统

AI搜索的黑科技?DeepSearch 究竟“深”藏着什么秘密?

阿里云大数据AI技术

阿里云 OpenSearch DeepSearch

MyEMS与开源浪潮:如何重塑全球能源管理的未来格局

开源能源管理系统

开源 能源管理系统

Mem0 + Milvus:为人工智能构建持久化长时记忆

阿里云大数据AI技术

阿里云 AI 检索 Milvus Mem0

还停留在批处理时代吗?增量计算架构详解

tapdata

批处理 变更数据捕获 金融实时数据处理 增量计算 CDC,流处理

查收你的技术成长礼包

京东零售技术

企业级 AI Agent 开发指南:基于函数计算 FC Sandbox 方案实现类 Chat Coding AI Agent

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

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