• “要取得成功,软件开发人员必须能够理解企业领域和这些领域内的感知问题(...) ,并用多种语言表达想法——至少是一种自然语言、一种建模语言和一种编程语言。” ——《对象思维》 "To succeed, a software developer must be able to
  • 对于本科生来说,科学是唯物主义的同义词,而唯物主义是确定性的同义词。 认识到不确定性是宇宙的一个基本特征让他们感到困惑。 首先,我不是质疑事物是否存在,而是质疑事物能够被了解的程度,以及我们可以在多大程度上谈论事物,而不是以它们呈现给我们的方式。
  • 科学史上发展起来的三种主要建模范式: [b]第一种:结构范式[/b] "结构范式"的关键思想是认为世界上的事物是由某种简单的描述元素--比如说几何物体--构成的,然后用类似于逻辑推理 icon
  • 为ChatGPT提供了上下文,它提供的创造性的部分确实有助于促进与领域专家的讨论: icon
  • 设计一个该死的解决方案实际上是软件开发过程中最困难的部分。 低代码工具通过暗示编写代码是最难的部分来欺骗客户。 任何低代码工具都不能使你免于花时间正确设计你的定制软件,也不能使你免于在围绕半成品设计建立解决方案时所经历的后果。 icon
  • 使用TypeScript和NestJS的领域驱动设计(DDD)、六边形架构(Hexagonal)、CQRS、事件源(ES)、事件驱动架构(EDA)、行为驱动开发(BDD)的完整工作实例。 这个开源项目使用了必要的软件架构和设计模式,如 DDD、六边形架构、CQRS 和最终一致性,使其适合更大的团队在 icon
  • 领域驱动设计(DDD)自2003年由Eric Evans提出以来一直存在。由于它可以为我们的软件开发实践和成果带来潜在的好处,我经常与开发人员一起介绍它的概念,并将其作为推荐的方 icon
  • Neal Ford 是 ThoughtWorks 的总监兼软件架构师。在这一集中,我们讨论了关于软件架构的所有内容,涵盖了他最近的三本书:“软件架构基础”、“软件架构:硬部分”和“构建演化架构”。我们首先讨论了软件架构的定义以及它与软件设计的关系。Neal 随后描述了与权衡相关的软件架构的两个重要法 icon
  • 任何给定软件项目的成功都可以归结为一个相当简单的定义或规则:我们需要构建正确的东西,我们需要正确构建这个东西。 这是一个非常抽象和简单的定义,即使不是原始的定义。然而,这是一个很难争论的问题。 [b]做正确的事情[/b] 构建正确的东西……我认为没有必要强调这种说法的重要性 icon
  • 微服务是用于创建云原生应用程序的最流行的架构风格之一。他们通过业务功能的模块化和以开发复杂性换取操作复杂性来解决软件复杂性。这就是为什么在微服务方面取得成功的一个关键先决条件是创建可以通过Kubernetes大规模运行的应用程序。 作为微服务运动的一部分,有大量的理论、技术和补充工具可用于从头创建微 icon
  • 敏捷方法现在可能很普遍,并且有了它,增量方法的概念应该被开发社区所了解和利用。尽管如此,在与开发人员交谈时,我仍然发现它的理论与它在日常开发实践中的应用之间存在脱节。 我认为这种脱节部分是由于我们分层构建解决方案的方式,以及我们在创建用户故事和最终关联代码时可能不知不觉地倾向于使用相同的分层方法。 icon
  • 我使用Rust将近一年了,我写了大约2万行代码(CLI、WebAssembly应用、Web服务器......)。 在我看来,编程范式的演变是朝着越来越大的设施去操作代表领域概念的结构。 例如,一个Java应用程序可以从UML图中设计出来,这使得它可以从实现的细节中抽象出来。 但即使在这个模型的具体 icon
  • 讨论分离业务和技术代码的好处,并解决常见的误解。 “域”是“业务域”的缩写。在这里,业务在广义上指的是应用程序旨在解决的现实问题(例如,待办事项列表、在线商店或游戏)。 icon
  • 区分问题和解决方案是领域驱动设计的秘诀 这听起来很平常吗?不是。问题解决短路是人们在压力下最常犯的错误(灯下黑),我们都处于压力之下 [img] icon
  • 讲故事使人类能够将知识传给下一代,并依赖于我们存储记忆的方式。我们可以通过举例说明,一个系统从开始到结束应该做什么,在时间轴上,而且没有分支。要做到这一点,我们需要用特定的时间线画一条线,代表状态在不同时间的不同变化。为什么是时间?时间是系统的一个重要方面,因为每个应用程序都是一个场景中的分布式系统 icon
  • CUPID 的五个属性是: [list] [*][b]C[/b]omposable可组合:与其他人一起玩得很好 [*][b]U[/b]nix哲学:做好一件事 [*][b]P[/b]redictable可预测的:做你期望的 [*][b]I[/b]diomatic惯用语:感觉自 icon
  • CanExecute/Execute模式背后的想法非常简单。让我们将决策制定(前提条件检查)与执行实际操作分开,但将它们都保留在域对象中。另外,如果不满足前提条件,我们将阻止执行该操作。 例子 假设一个社交媒体平台想要跟随其竞争对手并将其某些功能限制为“高级”客户。在这种情况下,只有付费用户才能更改 icon
  • 在我们的领域模型实现中,我们成功地使用了许多 DDD 模式和原则。在这篇文章中,我将展示一个内聚机制的示例,该机制使我们能够解决产品的复杂性。 [b]业务领域[/b] [url= icon