设计模式2个黄鹂鸣翠柳-《分析模式》漫谈23

news2024/9/21 0:48:37

DDD领域驱动设计批评文集

做强化自测题获得“软件方法建模师”称号

《软件方法》各章合集

“Analysis Patterns”的第一章有这么一句:

The "Gang of Four" book has had much more influence in software patterns than Alexander's work, and three out of those four authors had not read Alexander before writing that book.

2004(机械工业出版社)中译本的译文为: 

图片

标红字的地方都准确译出来了。

2020(人民邮电出版社)中译本的译文为:  

图片

虽然没有到让读者产生误解的地步,但还是存在这么几个问题:

(1)"Gang of Four" book改成了《设计模式》

虽然读者会自行脑补《设计模式》大概率就是GoF的那本《设计模式》,但建议还是尽量尊重原文。

*****以下是扩展*****

GoF的书面世三十年来,书名中有“模式”或“patterns”的书犹如滔滔江水绵绵不绝,其中一部分书的内容是用各种编程语言变着花样复刻GoF23模式,另一部分书的内容则是GoF23模式之外的新模式。

GoF(1995)有23个模式;Kent Beck的Smalltalk Best Practice Patterns(1997)有92个模式(就是格式不太规范);POSA(面向模式的软件架构)系列从1996年到2007年出了5本,作者说有114个模式;PLoPD(程序设计模式语言)系列从1995年到2006年也出了5本,手上资料不全暂时数不了,不过每一本的页数是对应POSA的近两倍;Fowler的《企业应用架构模式》有51个模式……

还有,PLoP年年开会,今年是第31届了。 

图片

图片

这时候,如果只是说“设计模式”,指向性已经减弱。

如果GoF23模式像数学的基本定理一样,是软件模式学科中推导其他模式的起点,GoF23模式一直占用“设计模式”这个名头还可以理解。

可是,GoF23模式只不过是比较早归纳在书上,而碰巧这本书在所有模式出版物中最出名。并没有证据说明,跳过GoF23模式直接学习和使用其他模式会有什么问题。

例如,下面是Peter Coad在1992年(比GoF的书早)归纳的模式,我觉得对于领域建模而言更有用。 

图片

图片

长期以来在软件开发人员中存在一个误解:模式=设计模式=GoF23模式。

我提供服务的这些年,经常碰到这样的情况:

客户:潘老师,来给我们讲讲设计模式吧!

我:我猜你说的设计模式就是那23个模式吧,设计可以讲,模式也可以讲,这些都有用,光讲那23个没用的。

客户(愕然):啊?设计不就是学那23个设计模式吗,不是说学会了23个设计模式就掌握设计了吗?

现在的模式数量已经非常多,开发团队只需根据自己所做的系统挑选一些模式来学习,包括:(1)系统所聚焦核心域的分析模式(2)系统所使用非核心域的设计模式。

例如,开发团队在做一个医疗系统,使用的平台是.NET,那么应该去搜索“医疗领域分析模式”、“.NET架构模式”或“.NET设计模式”来学习。

(2)阿拉伯数字的使用

如果原文使用单词,中文译文用汉字更合适,除非有特别的原因。

前面翻译Gang of Four时(参见:设计模式Gang of Four怎么翻译-《分析模式》漫谈21),2020中译本写的也是“四人组”而不是“4人组”。

*****以下是扩展*****

我在《软件方法》的勘误中说过这个苦恼:

原稿写“一十八年过去,弹指一挥间”,是化用伟人诗词。编辑估计没读过,随手把“一十八”改成了“18”,类似于“2个黄鹂鸣翠柳,1行白鹭上青天”。

(3)writing that book没有翻译

“写那本书之前”缩减成了“之前”。

*****以下是扩展*****

我的观点是应该尽量尊重原文,因为怕读者会联想:

翻译这样有原文白纸黑字可以对照的东西,其中还掺杂这么多“技巧”和“变化”,其他没有原文白纸黑字对照的,会怎么样呢?

以上的“技巧”和“变化”还算好的,之前我批评过的《实现领域驱动设计》的翻译,和这对比简直就是儿戏:

《实现领域驱动设计》中译本和原文的评点纠错合集>>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2075363.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux随记(十一)(部署flink-1.16.3、jdk-11.0.19、zookeeper-3.4.13、kafka_2.12-2.2.2)

一、部署flink-1.16.3、jdk-11.0.19、zookeeper-3.4.13、kafka_2.12-2.2.2 #软件下载 https://archive.apache.org/dist/kafka/2.2.2/kafka_2.12-2.2.2.tgz https://archive.apache.org/dist/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz https://archive.apache.org/…

油价波动加剧:需求忧虑与OPEC+增产决策成焦点

周五油价反弹难掩周度跌势 尽管周五油价在美联储降息预期的提振下大幅上扬,但本周整体油价仍录得下跌。WTI原油和布伦特原油分别下跌2.4%和0.83%,显示出市场对全球经济前景及原油需求的担忧。 OPEC增产决策悬而未决 OPEC成员国正面临增产决策的关键时刻。…

USB3.2 摘录(八)

系列文章目录 USB3.2 摘录(一) USB3.2 摘录(二) USB3.2 摘录(三) USB3.2 摘录(四) USB3.2 摘录(五) USB3.2 摘录(六) USB3.2 摘录&…

【Kotlin设计模式】Kotlin实现适配器模式

前言 适配器模式(Adapter Pattern)的核心将某个类的接口转换成客户端期望的另一个接口表示,使得客户端能够通过自己期望的接口与不兼容的类进行交互。适配器模式有三种实现方式,分别是类适配器模式、对象适配器模式、 接口适配器模式。 我们假设有个视频…

单GPU高效训练笔记

文章目录 cuda kernelFlash Attention v1,v2数据预加载micro-batchMicro-batch 的概念Micro-batch 的作用总结 编译优化TorchDynamo 的工作原理主要步骤 TorchDynamo 的优势使用场景总结背景和概念dynamo.optimize("nvfuser") 的作用使用场景优势 本文主要…

论素数的历史

目录 01 (1)这个级数实际上是s的函数,后来被称为ζ函数。 (2)证明了上面的结果,也就间接证明了 “素数无限多”,因为有限的序列之和不可能发散。 (3)等式左边的符号是…

应对技术风暴:开发团队的坚韧与智慧

目录 开发团队如何应对突发的技术故障和危机? 一、未雨绸缪:构建坚实的预防体系 1.1 强化监控系统 1.2 定期进行系统健康检查 1.3 制定应急响应计划 1.4 案例(一):亚马逊的AWS云故障 二、迅速响应:以行动诠释坚韧 2.1 快…

C++ 设计模式——状态模式

C 设计模式——状态模式 C 设计模式——状态模式1. 主要组成成分2. 逐步构建状态模式1. 状态接口定义2. 具体状态类实现3. 上下文类的实现4. 主函数 3. 状态模式 UML 图状态模式 UML 图解析 4. 状态模式的优点5. 状态模式的缺点6. 状态模式的适用场景完整代码1. Monster.h2. Mo…

视频生成新突破:内容-运动潜在扩散模型(CMD)

人工智能咨询培训老师叶梓 转载标明出处 当前的视频扩散模型虽然在生成质量上取得了巨大进步,但在处理高维视频数据时仍然面临内存和计算资源的高需求。这些模型通常直接处理高维视频数据,导致在生成视频时需要大量的计算资源和内存消耗。为了解决这一问…

【嵌入式】总结参考——Linux下的裸机驱动开发

板型:正点原子 I.MX6UL MINI 屏幕:7寸 1024*600 立意:既是这一段学习的总结,也可作为入门指南的参考,不过并不能作为教程来看,实际学习还是要找相应的视频或文章教程。 一、历程 应该和使用这块板子的大部分人一样&a…

基于ESP32驱动LAN8720以太网收发器

文章目录 一、LAN8720A简介二、引脚说明芯片管脚配置示例演示 一、LAN8720A简介 LAN8720A是低功耗的10/100M以太网PHY芯片,支持通过RMII接口和MAC层通信。它包含一个全双工10-BASE-T/100BASE-TX收发器,支持10Mbps和100Mbps操作。可以自动协商以自动确定最…

深度学习与OpenCV:解锁计算机视觉的无限可能

在科技日新月异的今天,计算机视觉作为人工智能领域的一颗璀璨明珠,正以前所未有的速度改变着我们的生活与工作方式。而《深度学习》与OpenCV,作为这一领域的两大重要工具,更是为计算机视觉的入门与深入探索铺设了坚实的基石。本文…

Python集成学习和随机森林算法使用详解

概要 集成学习是一种通过组合多个模型来提高预测性能的机器学习方法。它通过将多个弱学习器的结果结合起来,形成一个强学习器,从而提升模型的准确性和稳健性。随机森林(Random Forest)是集成学习中一种非常流行且有效的算法,特别适用于分类和回归任务。本文将详细介绍Pyt…

【图论】Tarjan算法(强连通分量)

一、Tarjan算法简介 Tarjan算法是一种由美国计算机科学家罗伯特塔杨(Robert Tarjan)提出的求解有向图强连通分量的线性时间的算法。 二、强连通分量的概念 在有向图 G G G 中,如果任意两个不同的顶点相互可达,则称该有向图是强…

平价电容笔排行榜:2024开学季五大高人气电容笔测评推荐 !

随着开学季的到来,无纸化学习再次成为热议话题,而电容笔作为支持这一趋势的重要配件,自然也备受瞩目。面对市场上琳琅满目的品牌选择,找到最适合自己需求的那一款就成了一个不小的挑战。不用担心,作为一名资深的数码产…

基于FPGA的SD NAND Flash数据读写实现

1、存储芯片分类 目前市面上的存储芯片,大致可以将其分为3大类: ① EEPROM EEPROM (Electrically Erasable Programmable read only memory)是指带电可擦可编程只读存储器,是一种掉电后数据不丢失的存储芯片。EEPROM 可以在电脑上或专用设备…

【初阶数据结构】复杂度

b站复杂度链接 另一个复杂度链接 复杂度笔记

利用大型语言模型协作提升甲状腺结节超声诊断的一致性和准确性| 文献速递-基于深度学习的癌症风险预测与疾病预后应用

Title 题目 Collaborative Enhancement of Consistency and Accuracy in US Diagnosis of Thyroid Nodules Using Large Language Models 利用大型语言模型协作提升甲状腺结节超声诊断的一致性和准确性 Background 背景 Large language models (LLMs) hold substantial …

git仓库删除某个历史提交

目录 问题情况1情况2 问题 如果我们在开发过程中,存在一些验证性的提交或者失误性的提交,那么这些提交我们不想要了,怎么办? 情况1 如果是想要删除某个commitid之后的所有提交 那么git reset 可以满足你 git reset --hard 你要…

2001-2023年上市公司数字化转型年报词频统计(吴非、赵宸宇、甄红线等300+个关键词)

2001-2023年上市公司数字化转型年报词频统计(吴非、赵宸宇、甄红线) 1、时间:2001-2023年 2、来源:上市公司年报 3、参考文献:企业数字化转型与资本市场表现——来自股票流动性的经验证据(吴非&#xff…