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

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没有翻译

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

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

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

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

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

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

源码来自:https://pan.quark.cn/s/41b9d28f0d6d 在信息技术领域中,jQuery作为一个广受欢迎的JavaScript框架,显著简化了诸多操作,包括对HTML文档的遍历、事件的管理、动画的设计以及Ajax通信等。 本篇文档将深入阐释如何运用jQuery达成一个图片自动播放的功能,这种效果常用于网站的轮播展示或幻灯片演示,有助于优化用户与页面的互动,使网页呈现更加动态的视觉体验。 为了有效实施这一功能,首先需掌握jQuery的核心操作。 通过$符号作为接口,jQuery能够迅速选取DOM组件,例如$("#id")用于选取具有特定ID的元素,而$(".class")则能选取所有应用了某类class的元素。 在选定元素之后,可以执行多种行为,诸如事件监听、样式的变更、内容的更新以及动画的制作等。 关于“一个基于jQuery的图片自动播放功能”,首要任务是准备一组图片素材,这些素材将被整合至一个容器元素之中。 例如,可以构建一个div元素,将其宽度设定为单张图片的尺寸,再借助CSS实现溢出内容的隐藏,从而构建出水平滚动的初始框架。 ```html<div id="slider"> <img src="image1.jpg" alt="Image 1"> <img src="image2.jpg" alt="Image 2"> <!-- 更多图片内容... --></div>```接着,需要编写jQuery脚本以实现图片的自动切换。 这通常涉及到定时器的运用,以设定周期性间隔自动更换当前显示的图片。 通过使用`.fadeOut()`和`.fadeIn()`方法,能够实现图片间的平滑过渡,增强视觉效果。 ```javascript$(document).re...
根据原作 https://pan.quark.cn/s/eb05e63067ef 的源码改编 Vulkan在现代图形编程领域被视为一种高效且低层级的API,它赋予开发者对硬件资源的直接支配权,从而在游戏开发、专业级渲染以及计算密集型应用中达成卓越的性能表现。 MoonVulkan作为一个针对Vulkan API的Lua语言绑定库,显著简化了使用Lua来编写Vulkan图形程序的过程。 Lua作为一种轻量级脚本语言,因其语法精炼且易于集成,经常被应用于游戏开发以及其他需要快速构建原型设计的场景。 MoonVulkan的核心宗旨是将Vulkan的强大功能引入Lua编程环境,使得开发者能够借助Lua的简洁语法来处理复杂的图形作业。 这个库提供了一套完整的Vulkan函数和结构体的Lua接口,使得Lua程序员可以直接运用Vulkan API的各类功能,例如构建设备、管理交换链、提交命令缓冲区等操作。 在MoonVulkan框架内,开发者可以运用Lua的动态属性,例如在执行期间检查错误、执行条件性判断以及循环操作,这些在C++或C语言中通常需要编写大量的辅助代码才能完成。 再者,得益于Lua的脚本特性,MoonVulkan支持热更新机制,即在程序运行过程中可以调整图形逻辑,无需对整个项目进行重新编译。 在运用MoonVulkan时,有几个关键性概念需要掌握:1. **Vulkan的初始化设置**:必须配置Vulkan实例,这是所有Vulkan操作的基础环节。 这包含选取物理设备(代表GPU)、构建一个恰当的实例配置,并妥善处理所需的扩展和层。 2. **表面的构建**:在桌面平台环境下,这通常涉及与窗口系统的互动,以获取一个象征屏幕输出的VkSurfaceKHR对象。 3. **图形与计算队列的选择...
基于STM32 F4的永磁同步电机无位置传感器控制策略研究内容概要:本文围绕基于STM32 F4的永磁同步电机(PMSM)无位置传感器控制策略展开研究,重点探讨了在缺乏机械位置传感器条件下,如何通过算法实现对电机转子位置与速度的精确估算,从而实现高性能的电机控制。文中可能涉及如滑模观测器、扩展卡尔曼滤波、高频注入法或反电动势法等核心观测技术,并结合STM32 F4高性能处理器的硬件平台进行算法实现与实验验证,旨在提升系统可靠性与降低成本。此外,研究还可能涵盖磁场定向控制(FOC)框架下的电流环、速度环控制策略设计与优化。; 适合人群:具备一定电机控制理论基础和嵌入式开发经验,从事电机驱动、电力电子或自动化相关方向的研究生、工程师及科研人员。; 使用场景及目标:①用于永磁同步电机驱动系统中替代传统位置传感器,提高系统鲁棒性和集成度;②适用于对体积、成本和可靠性要求较高的工业控制、新能源汽车、无人机、家电等领域;③目标是掌握无感控制的核心算法原理与工程实现方法,完成从理论到实际系统的搭建与调试。; 阅读建议:建议结合电机控制基础知识与STM32开发环境进行学习,重点关注观测器设计与参数整定部分,配合仿真模型与实物代码进行验证,深入理解算法在实际运行中的动态响应与抗干扰能力。
【鲁棒优化、大M法、C&CG算法】计及风、光、负荷不确定性两阶段鲁棒优化(Matlab代码实现)内容概要:本文介绍了基于Matlab代码实现的计及风、光、负荷不确定性的两阶段鲁棒优化方法,重点运用鲁棒优化理论、大M法和C&CG算法解决电力系统中的不确定性问题。文中详细阐述了模型构建过程,包括不确定集合的设定、两阶段决策机制的设计以及求解算法的实现步骤,旨在提高电力系统在可再生能源接入背景下的调度鲁棒性和经济性。同时,文档列举了大量相关Matlab仿真资源,涵盖智能优化算法、机器学习、电力系统优化、路径规划等多个方向,提供了丰富的科研技术支持与案例复现资源。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事能源系统优化工作的工程技术人员。; 使用场景及目标:①研究新能源接入背景下电力系统的优化调度问题;②掌握鲁棒优化建模方法及C&CG算法的实现技巧;③进行学术论文复现或科研项目开发;④学习Matlab在电力系统仿真中的实际应用。; 阅读建议:建议读者结合提供的网盘资源下载完整代码进行实践操作,重点关注两阶段鲁棒模型的构建逻辑与算法迭代过程,同时可参照文中提及的YALMIP工具包使用方法,提升建模效率。对于初学者,宜先熟悉基本优化理论再深入算法实现细节。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值