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

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

关注

评论

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

捷途山海T2省油王者,续航新篇章

极客天地

服务器托管与租赁的有什么区别

Finovy Cloud

服务器 服务器托管 服务器租

苹果再失资深设计师,Jony Ive 团队基本离开;OpenAI 或于下周发布 AI 搜索丨 RTE 开发者日报 Vol.201

声网

【论文速读】|大语言模型是零样本模糊测试器:通过大语言模型对深度学习库进行模糊测试

云起无垠

准实时数仓搭建指南:以仓储式会员商超为模拟场景

tapdata

物化视图 实时数仓应用场景 仓储式会员店 meshjoin

高防服务器支持测试功能,让你随时监控网站的安全状态

一只扑棱蛾子

服务器

企业网络需求及适合的解决方案

Ogcloud

SD-WAN MPLS 企业组网 企业网络 SD-WAN组网

聊聊微软Power平台

这届南京码农

低代码 SaaS Power Platform

出海企业必备神器:海外云手机的秘密你了解多少?

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机 跨境云手机

什么是云原生架构,我们该如何做好云原生安全,引领云计算时代的应用程序革新

德迅云安全杨德俊

避免踩坑:盘点导致财务转型失败的因素

智达方通

企业管理

云管平台-助力企业云管理飞跃发展!

行云管家

云计算 云服务 云管平台 云管理

LLM生态下爬虫程序的现状与未来

不在线第一只蜗牛

携手鲲鹏昇腾 HashData展现云原生数仓创新力量

酷克数据HashData

当AI遇见低代码:数智化时代发展新趋势

不在线第一只蜗牛

人工智能 低代码 数智化

inBuilder 低代码平台新特性推荐 - 第十八期

inBuilder低代码平台

低代码

手把手系列!使用 Zilliz Cloud 和 AWS Bedrock 搭建 RAG 应用

Zilliz

AWS Zilliz zillizcloud Amazon Bedrock

什么是域名解析?一文读懂域名解析设置流程和注意事项

防火墙后吃泡面

一键自动化博客发布工具,用过的人都说好(infoq篇)

程序那些事

工具 自动发布

【YashanDB知识库】ycm托管数据库时报错OM host ip:127.0.0.1 is not support join to YCM

YashanDB

数据库 yashandb 崖山数据库 YCM

智慧公厕案例-深圳大梅沙海滨公园

光明源智慧厕所

智慧公厕

爆爽,英语小白怒刷 50 课!像玩游戏一样学习英语~

Immerse

英语 学英语

服务器安全堡垒机品牌就选行云管家!

行云管家

网络安全 服务器 数据安全 堡垒机 服务器安全

3D实时云渲染VS本地渲染:哪种渲染方式更划算?

点量实时云渲染

3D 渲染 云渲染 实时云渲染

电商数据集成:利用API接口实现商品详情自动化获取

Noah

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