Header logo.
稀星垠盗版后摇
首页归档标签自述Atom

1 月份

1 月份读完了一本瑞典语的小说,遇到生词就划线,每页大概能划 10 到 20 个词,剧情是能跟得上的。自以为也能懂一些微妙的涵义,但这个也没办法量化,更没办法跟别人解释。

倒是打算每页至少查三行、五行的生词,但是到 1 月底才发现 300 页的书大概只查了 80 多页。但是已经迫不及待地开始读下一本小说了,毕竟大脑里总要不停地输入信息,不然就会感觉崩溃。好在常见的词,下一本书里迟早还是会遇到,只要不停地输入,总能学会的。


前段时间了解到了一个叫「领域驱动的设计」(Domain-Driven Design) 的概念,感觉受到了很大的启发。(用中文讲就怪怪的,挠头。)

一开始是看了 YouTube 上的一个视频1,之后又翻了翻一本叫 Domain Modeling Made Functional 2 的书。书只看了开头的几章,后面没细看,因为后面的例子用的是 F#。

上面的视频、书,以及网上读到的文章和例子里,具体的操作手法会有些细微的差异。然而大略地讲,动手写码之前要理解软件是做什么的(废话),而理解「软件是做什么的」之前,更要理解「这个 business 是干什么的」。

捋清楚流程中有多少「实体」 (entities);各个实体会发生什么「事件」(events);某个事件发生后,谁要去做哪些「工作流」 (workflows)。

之后观察这些东西之间有什么联系,然后就会发现联系紧密的东西,形成了 context。

把这些实体、事件、工作流、contexts 都起好名字。不论代码里、文档里,还是日常沟通里,都要用同样的名字。

其实系统不复杂的话,倒也不用照本宣科。然而日常借用这个思路还是有很大帮助的。


Mermaid 是很有用的。3

放在 Markdown 里,用纯文本就可以画流程图、ERD 什么的。VSCode、GitHub、Notion 里都能无痛预览。

1 月份用 Mermaid 画了很多流程图和 ERD,感觉讲事情的时候确实明白了很多。泣血推荐!