DDD通用语言、多尿和尿频-《分析模式》漫谈41

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

A patient with observations of the presence of thirst, weight loss, and polyuria indicates diabetes.

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


 
虽然没有完全使用类图(类型图)上的概念,但几个标红的地方基本上都译出来了,presence译作“呈现”,polyuria译作“多尿”。

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


 
也没有使用类图上的概念,而且译成了一句大白话,presence漏译,没有体现出作者的意思。另外,polyuria译作“尿频”,这是错误的。

**********

Fowler为什么要很别扭地这样写,如果他想说大白话,可以换另外的写法。

这是因为他要用图3.10所定义的概念来表达。

图3.10原图如下,我把本文所列句子的关键词和图中的类型划线对应:


 
observation、presence对应图上的类型,thirst, weight loss, polyuria则是Observation Concept(观察概念)的一些实例。

原图不是用我们现在常见的UML来画的,可能理解起来有些费劲。我画的UML版本如下:


 
从图上可以看到,“观察”有一个子类叫“类别观察”,“类别观察”下面又分两个子类,“不存在(Absence)”和“存在(Presence)”。

本文开头所列句子,2024中译本打算翻译如下:

一名患者有以下存在观察:口渴、体重减轻和多尿,这些观察指示有糖尿病。

更细一点说就是:

如果一个“患者(人)”对象链接到一些“存在观察”对象,而且这些“存在观察”对象又分别链接到“口渴”、“体重减轻”、“多尿”等“观察概念”对象→这个人可能有糖尿病。

要用类图上的概念来表达,不能大白话。

**********

说到这里,有没有同学觉得和领域驱动设计鼓吹的“通用语言”有点像?

对的,领域驱动设计可能已经在山顶上等着收获胜利果实了——可是,平时鼓吹“通用语言”,真的到了用“通用语言”的时候,怎么就忘了用呢?

用类图、状态机图等严谨的方式定义出来的概念,才是真正的“通用语言”。或者说,“通用语言++的祖先”早就有了,不需要领域驱动设计重新造词。

就像我之前的文章批评过的,目前为止,我就没看到国内的DDD圈子有合格的建模者,能严谨地把领域逻辑通过模型表达出来,只是在喊口号和、简单罗列和错误百出的简单类图。

**********

2020中译本还存在一个问题:把polyuria译成“尿频”。

Excessive Urination(Polyuria)是多尿,和尿频(Frequent Urination)不是一个意思。

下图摘自默沙东诊疗手册(https://www.msdmanuals.cn/home/kidney-and-urinary-tract-disorders/symptoms-of-kidney-and-urinary-tract-disorders/excessive-or-frequent-urination)


 
可以看到,尿频的尿量是正常的,只不过排尿次数多,每次排得少。这是比较常见的问题,特别是50岁以上男性。

多尿(一般也会尿频)则是总尿量变大,这个麻烦就大了,很可能是糖尿病。这就是书中原文所说的。

2004(机械工业出版社)中译本译为“多尿”,是正确的。

2020(人民邮电出版社)中译本译为“尿频”,是错误的。

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

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

相关文章

【C++_string类练习】仅仅反转字母

题目链接:仅仅反转字母 解题思路: 这种反转字符的题目我第一个想到的方法就是:双指针 一个指针在前start,一个指针在后back, 如果指针所指向的位置的值是字母,那么两个指针位置的值就进行交换&#xff0…

矿山企业电能智能化管理怎么实现

0引言 电力工业是国民经济和社会发展的基础,随着高质量发展要求的提升,提高能源效率对工业企业至关重要。有效提高电力能效的方法包括技术创新、监测用能行为和探索技术解决方案。智能化的电能管理是应对资源和环境压力的关键措施,对提高用电…

点餐小程序实战教程20广告管理

目录 1 创建数据源2 添加轮播容器3 创建变量4 绑定变量5 预览应用总结 一般餐厅需要有一些宣传,在我们的点餐页面可以在顶部加载广告位。广告主要是用轮播图的形式进行展示,本节我们介绍一下如果显示广告。 1 创建数据源 打开控制台,点击应用…

10-Docker安装Redis

10-Docker安装Redis Docker安装Redis 以 Redis 6.0.8 为例: docker pull redis:6.0.8直接pull会出现以下错误 [rootdocker ~]# docker pull redis:6.0.8 Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request can…

【Cadence27】HDL拷贝工程➕Allegro导出DXF和3D文件STP

【转载】Cadence Design Entry HDL 使用教程 【Cadence01】Cadence PCB Edit相对延迟与绝对延迟的显示问题 【Cadence02】Allegro引脚焊盘Pin设置为透明 【Cadence03】cadence不小心删掉钢网层怎么办? 【Cadence04】一般情况下Allegro PCB设计时的约束规则设置&a…

卸载 Git

目录 打开 Geek找到 Git右键卸载 Git卸载完成等待扫描注册表点击完成清除Git在本地的配置文件 打开 Geek 找到 Git 右键卸载 Git 卸载完成 等待扫描注册表 点击完成 已经删除完毕 清除Git在本地的配置文件 进入 C:\Users\用户名 删除框起来的配置文件 👇 源码资料…

webpack自定义插件 ChangeScriptSrcPlugin

插件文件 class ChangeScriptSrcPlugin {apply(compiler) {const pluginName "ChangeScriptSrcPlugin";compiler.hooks.compilation.tap(pluginName, (compilation, callback) > {compilation.hooks.htmlWebpackPluginAlterAssetTags.tapAsync(pluginName,(html…

DES对称加密算法

DES(Data Encryption Standard,数据加密标准)是一种对称加密算法。 算法概述 加密类型:对称加密(同一密钥用于加密和解密)。密钥长度:64位(8字节),其中有效…

java--网络编程

网络的相关概念 网络通信 1.概念:两台设备之间通过网络实现数据传输2.网络通信:将数据通过网络从一台设备传输到另一台设备3.java.net包下提供了一系列的类或接口,供程序员使用,完成网络通信 网络 概念:两台或多台设备通过一定物理设备连接…

UltraISO(软碟通)制作U盘制作Ubuntu20.04启动盘

目录 一、启动盘制作 1、工具准备 2、打开UltraISO后,点击左上角的文件,在打开的下拉项中,选择打开准备好的Ubuntu系统20.04 LTS镜像文件(ubuntu-20.04-desktop-amd64.iso); 3、然后点击启动->写入硬盘映像 4、在弹出的窗…

Pollard‘s p-1算法

概述 光滑数 (Smooth number):指可以分解为多个小素数乘积的正整数 当p是N 的因数,并且p−1是光滑数,可以考虑使用Pollards p-1算法来分解N 当p是N的因数,并且p1是光滑数,可以考虑使用Williamss p1算法来分解N 这里…

一个简单的Qt Console Application计算练习程序

初步体验Qt Creator 用途&#xff1a;练习20以内2位数乘法速算的程序 功能1&#xff1a;支持用户设定题目数量 std::cout << "请输入本次练习题目数量&#xff1a;";int numProblems 0;std::string num;std::cin >> num;try {numProblems std::stoi(…

飞腾X100适配Ubuntu说明

【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力&#xff0c;聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域&#xff0c;包含了应用使能套件、软件仓库、软件支持、软件适…

Docker配置网站环境

Mysql 先安装mysql 启动并后台运行&#xff1a;run -d 容器名称&#xff1a;--name 设置端口映射&#xff1a;-p 主机端口&#xff1a;容器端口 环境变量&#xff1a;-e 最后指定镜像名称 sudo docker run -d \--name mysql\-p 3306:3306\-e MYSQL_ROOT_PASSWORD123456\…

单细胞空间转录组RCTD去卷积分析学习和整理

RCTD(Robust Cell Type Decomposition)&#xff0c;是一种用于将单细胞RNA测序数据中的细胞类型注释转移到空间转录组学数据上的方法。RCTD 通过整合单细胞和空间转录组学数据&#xff0c;能够较为精确地为空间点&#xff08;spots&#xff09;分配细胞类型或细胞类型的混合&am…

LabVIEW风机滚动轴承监测系统

矿井主通风机作为矿井中最重要的通风设备&#xff0c;一旦出现故障&#xff0c;不仅会影响矿井内的空气质量&#xff0c;还可能引发安全事故。研究表明&#xff0c;通风机中约30%的故障是由轴承问题引起的。因此&#xff0c;能够实时监控矿井主通风机轴承状态的系统&#xff0c…

CSS网页布局(重塑网页布局)

一、实现两列布局 许多网站有一些特点&#xff0c;如页面顶部放置一个大的导航或广告条&#xff0c;右侧是链接或图片&#xff0c;左侧放置主要内容&#xff0c;页面底部放置版权信息等 一般情况&#xff0c;此类网页布局的两列都有固定的宽度&#xff0c;而且从内容上很容易区…

学习java第九天 简单小项目

今天简单写了小项目 import java.math.*; import java.util.*; public class Project_array{// data 拿到外面 封装的方法 共享同一个变量// static 静态上下文只能直接访问静态的变量// 一旦加上static 代表当前的变量全局共享一份static Record[] data {new Record("…

零基础Java第八期:一维数组(1)

目录 一、 一维数组的基本概念 1.1. 什么是数组 1.2. 数组的创建及初始化 1.3. 数组的使用 二、数组是引用类型 2.1. 初始JVM的内存分布 2.2. 基本类型变量与引用类型变量 2.3. 引用变量的理解 2.4. null 三、数组的应用场景 3.1. 作为函数的参数 3.2. 作为函数的返…

你可能需要的多文档页面交互方案

前言 欢迎关注同名公众号《熊的猫》&#xff0c;文章会同步更新&#xff01; 在日常工作中&#xff0c;面对不同的需求场景&#xff0c;你可能会遇到需要进行多文档页面间交互的实现&#xff0c;例如在 A 页面跳转到 B 页面进行某些操作后&#xff0c;A 页面需要针对该操作做出…