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

Michael Feathers 希望消除错误能驱动设计

  • 2018-09-26
  • 本文字数:1296 字

    阅读完需:约 4 分钟

Michael Feathers 因其著作《高效操作遗留代码》( Working Effectively With Legacy Code )一书而广为人知。他发现错误中存在着一些值得关注之处,但他也承认大部分开发人员并未投入时间去关注这些错误。在他看来,很多错误解决机制就是采取某种程度上的放弃。在 Explore DDD 2018 大会上,Feathers 做了主题演讲,探讨消除错误如何驱动软件系统的设计。

针对领域驱动设计(DDD)大会的主题,Feathers 在演讲一开始就给出了对“领域”(Domain)的五种定义。他在这些定义中发现了一个共性,即领域就是一种范围,一些领域是随意构造的,也有一些是人们创造的。正因为领域是随意构造的,因此人们可以重新塑造和扩展领域。虽然人们可以直接使用 DDD 模拟并适应不断变化的业务流程,但为了更好地应对乃至消除错误,Feathers 建议应对领域做尽可能类似的更改。

Feathers 指出,领域扩展可能会导致一些不和谐因素,因此必须慎重。Feathers 就此举了两个例子,一个是在可选日期中输入了二月三十日,另一个是在编程语言中允许对数组赋以负的索引值。对于前者,人们非常易于理解简单域模型是如何允许这种非法情况的发生。但是对于负的数组索引值,情况则恰恰相反,对此应抛出一个错误。一旦这样的技术可用,并被人们按有效的语法采纳,那么我们就会意识到领域扩展对此类情况是非常有用的。

Feathers 提及,他探索错误的部分灵感来自于 Joe Duffy 博客中对微软的Midori 操作系统研究项目的论述,尤其是对错误模型l 的分析。Duffy 提及,“错误模型试图回答的一个基本问题就是,'错误’是如何传递给程序员和系统用户的?”这个看似简单的问题,自然导致了“如何定义错误”的挑战。Feathers 沿此思路继续推理,最终得到人们希望知道的是“为什么我们会存在错误?”。换句话说,如果“错误”只是一个用于指代我们领域中不匹配概念的用词,那么我们应该怎么做?

演讲进而从领域的概念延伸到如何实际处理错误。在遇到错误时,人们主要存在三种做法。第一种做法是简单地返回空值。这种做法消除了对任何错误原因的解释,需要人们对空引用做额外的检查工作,并且混淆了人们仍在处理错误的事实。另一种做法是抛出异常。这种做法也许要优于返回空值,因为它可以给出了问题的一些相关信息,但它仍需要调用者去处理异常情况。第三种做法是将错误作为领域的一部分。Feathers 认为,“错误就是我们领域的一部分,因为错误可能会发生在我们的工作中”。很显然,Feather 提倡采用第三种做法。

扩展领域意味着提出问题,“我们真正希望会发生什么?”。不应只是告诉他人错误的相关信息,而应引入一些新概念去提供可操作信息。一个例子就是使用空对象模式返回 ItemNotFound对象,其具体实现取决于具体的情况。

在演讲中的最后,Feathers 给出了 Erlang 的设计理念,并按英式风格概括为“保持冷静,任其崩溃”。计算是与现实世界紧密联系的,因此在现实中计算可能会产生失败。Erlang 通过将现实情况囊括在领域之中,扩展了应用的领域。如果一种语言的整个领域可以使用这种方式扩展,那么即便是更小的系统,都一定能受益于涵盖错误的领域扩展。

查看英文原文: Michael Feathers Wants Error Elimination to Be a Design Driver

2018-09-26 05:301402
用户头像

发布了 391 篇内容, 共 155.1 次阅读, 收获喜欢 257 次。

关注

评论 1 条评论

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

TDengine TSDB 3.3.8.0 上线:SMA、TLS、TDgpt、taosX、taosgen 一次全进化

TDengine

tdengine 时序数据库

“多模态文本智能技术”:让AI真正读懂文档

herosunly

人工智能

国内最好的五个企业出海服务商

Wolink

企业出海 跨境电商 出海服务商 海外营销推广 达人营销

把握政策新导向,以AI风控赋能健康险创新——暖哇科技助力商业医疗保险高质量发展

暖哇科技

行业分享丨AI+仿真如何重塑设计研发价值?

Altair RapidMiner

AI 汽车 仿真 CAE 设计仿真

火山引擎推出Data Agent评测体系,并发布《2025数据智能体实践指南》

字节跳动数据平台

软件系统安全建设方案

金陵老街

软件 信息化

对话国泰海通证券:证券行业如何破局从0到1玩转可信数据流通

隐语SecretFlow

开源 隐私计算 数据流通 开源活动 可信数据空间

AI赋能人工协同评估系统:当人类智慧遇见机器效率

上海拔俗

人工智能如何赋能企业出海

Wolink

企业出海 跨境贸易 跨境电商 海外营销推广 达人营销

Karmada 用户组再迎新成员,Scatter Lab 正式加入!

华为云原生团队

云计算 容器 云原生 Karmada

海外红人营销提升ROI的秘诀

Wolink

跨境电商 出海服务商 出海企业 海外社媒营销 海外营销推广

企业海外营销需要数据驱动

Wolink

跨境贸易 跨境电商 出海企业 海外社媒营销 海外营销推广

市场声量即战场:如何用国外社交媒体监控软件打赢品牌曝光战役?

沃观Wovision

舆情监测 社媒监测 舆情监测系统 社交媒体监控 海外社交媒体监控

AI常态化教研系统:用技术赋能教师日常教学与专业成长

上海拔俗

海外客户心声直达:将海外社交媒体监控系统变为你的免费产品研发中心

沃观Wovision

沃观Wovision 舆情监测系统 海外舆情监测 社交媒体监控 海外社交媒体监控

火山引擎发布新产品用户研究Agent,并推出数据智能体评测体系

字节跳动数据平台

跨境卖家必看:利用国外社交媒体监控服务选品与营销指南

沃观Wovision

沃观Wovision 舆情监测系统 海外舆情监测 社交媒体监控 海外社交媒体监控

DolphinScheduler依赖机制、Open-Falcon告警推送与监控的优化实践

白鲸开源

大数据 开源 Open-Falcon Apache DolphinScheduler 工作流任务调度

得物携手火山引擎,打造财务场景数智升级新范式

科技新消息

从“看见”到“预见”:合合信息“多模态文本智能技术”如何引爆AI下一场革命。

bug菌

多模态文本智能技术

怎么利用海外社交媒体平台做海外推广

Wolink

跨境电商 出海企业 海外社媒营销 海外营销推广 达人营销

低代码表单控件全攻略:4 大类控件 + 属性配置,数据收集高效又精准

引迈信息

行业趋势早知道:利用国外社交媒体监控网站发现商机

沃观Wovision

沃观Wovision 舆情监测系统 海外舆情监测 社交媒体监控 海外社交媒体监控

jemalloc思想的极致演绎:深度解构Netty内存池的精妙设计与实现

poemyang

Netty RPC netty内存管理

企业出海是什么意思

Wolink

企业出海 海外社媒营销 海外营销推广 品牌出海 达人营销

90%企业踩坑?超融合采购避雷指南:避开硬件锁链,轻量敏捷未来

智驱前线

营销人必备:海外社媒监控系统让你的内容策略精准十倍

沃观Wovision

舆情监控 舆情监测 海外舆情监测 社交媒体监控 海外社交媒体监控

告别灵感枯竭:社交媒体爆款内容的底层逻辑与公式

Wolink

跨境电商 出海企业 海外社媒营销 海外营销推广 达人营销

劳务工招聘助手小程序管理系统:革新劳务招聘管理的高效解决方案

微擎应用市场

20 万奖金池就位!Higress AI 网关开发挑战赛参赛指南

阿里巴巴云原生

阿里云 云原生

Michael Feathers希望消除错误能驱动设计_语言 & 开发_Thomas Betts_InfoQ精选文章