当前位置: 首页 > news >正文

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.mrgr.cn/news/54856.html

相关文章:

  • 浅谈数据库选型
  • Nature 正刊丨空间蛋白质组学确定JAKi是一种致命皮肤病的治疗方法
  • Django框架介绍
  • 探索光耦:光耦——不间断电源(UPS)系统中的安全高效卫士
  • element plus e-table表格中使用多选,当翻页时已选中的数据丢失
  • 数据结构邻接表表示图的深度优先搜索遍历有向图+无向图(C语言代码+终端输入内容)
  • 1. 解读DLT698.45-2017通信规约--预连接响应
  • upload-labs靶场Pass-05
  • 第五届人工智能与教育国际学术会议(ICAIE 2024)
  • (五)若使用LQR控制小车倒立摆,该如何对小车和摆杆的动力学方程线性化?哪些变量是可以进行简化的,线性化后的状态空间方程应该怎么列写
  • 瑞数后缀加密怎么处理
  • 大厂面试提问:Flash Attention 是怎么做到又快又省显存的?
  • 多线程编程
  • 多表使用use_hash hint
  • 操作系统学习笔记-1.3操作系统引导,虚拟机
  • Spark广播变量(类似小表广播)
  • 【入门篇】2.8 时钟(三)
  • 【Linux从入门到精通一】操作系统概述与Linux初识
  • 物联网智能技术的深入探讨与案例分析
  • go基础(一)
  • 大数据-MySQL集群
  • 【论文速看】DL最新进展20241020-Transformer量化加速、低光增强
  • 【云从】七、云数据库
  • 2. 解析DLT698.45-2017通信规约--正向有功总电能
  • [C++]ecplise C++新建项目跑hello world
  • python中dataframe转化为list的几种方法