用途:在决定系统中有哪些概念、它们叫什么、类型与上下文边界如何划分时使用。核心主张是模型即关于世界的断言:每个类型、分支、字段都是一种声明,若断言不成立,代码余生都在为此道歉(多义的可空字段、解释不可能状态存在的注释、散落各处的校验)。
主要能力与原则:一、只写真实陈述。让非法陈述无法被拼写出来,而不是被检查出来;互斥状态是同一事物的不同分支,不用一组可能同时为真的布尔与时间戳;仅在某状态可知的数据放在该状态内;带规则的概念由构造时强制规则的类型承载,持有即证明有效。二、每个 null 都是一个提问:不适用、尚不可知、刻意为空、无人查看,是四种不同事实,用一个 null 代表终将被误读。检验标准不是非法状态是否被阻止,而是它能否被写下来。三、名字即模型:使用领域真实用词,一个概念一个词,在类型、函数、测试、界面与对话中保持同一;缺失的词意味着缺失的概念;警惕 manager、handler、processor、service、data、info、util 这类不属于领域的词。四、同一词在不同边界含义不同:计费中的客户与配送中的客户应拆成两个类型并在边界翻译,而非合并成两者字段的并集。五、建模转换而不仅是状态:让转换成为函数、状态成为类型,非法时序无法通过编译;已发生之事用过去时命名、保持不可变。六、区分身份与值:有身份者历经变化仍是自身,值对象完全由内容决定、可互换。
在既有模型中工作时:先找领域对该主题已有的说法,判断新概念是真新增、旧概念的第二名称,还是旧概念本身有误;若模型有已知错误,应直言而非绕开。
适用场景:领域概念与类型设计、限界上下文划分、命名与词汇统一、状态机与转换设计、既有模型演进。
限制:资料未提供该技能的安装命令、平台支持、收费、价格与具体使用步骤,暂未提供。