• 帮助工程团队将函数编程原理应用到高级设计和体系结构与架构的通俗易懂的思想和最佳实践。关于函数式编程或FP的许多文章都专注于低级编码实践(例如避免副作用)和FP特定模式(例如可怕的monad)。但是,它们不涉及高级设计和体系结构。然而,FP原则可以大规模应用。实际上,从后端的无服务器到
  • 当我们开始编写软件时,我们总是希望有一个好的设计。我们阅读书籍,运用最佳实践,最后,我们常常一团糟。根据我在一家定制软件开发公司的经验,我每天必须处理此类代码,尤其是在某些旧系统上工作时。造成这种情况的原因多种多样,我将尝试在一系列文章中以一些实际的方式来探讨其中的一些原因。在我的第 icon
  • 在这篇文章中使用Vaughn Vernon的书[ IDDD,2013 ] 的例子来描述SCRUM模型的情景,并能够以实际的方式展示贫血模型和富模型的实现之间的区别。 让我们说产品负责人: 允许将每个积压项 icon
  • 聚合是领域驱动设计DDD中最容易被误解的概念之一,只是一堆实体和值对象吗?还是更多?什么是聚合?当然,这是领域驱动设计的核心模式……但这只是对象的集合吗?马丁·福勒(Martin Fowler)解释说: 聚合是数据存储传输的基 icon
  • 在讨论如何在应用DDD时如何最好地实现我们的领域对象(最近变得越来越流行)的讨论中,一位同事向我指出了Martin Fo icon
  • 如今,有关干净代码和体系结构的讨论很多。关于如何实现它的讨论越来越多。罗伯特·C·马丁(Robert C. Martin)描述的规则是通用的,我认为,我们可以在其他各种情况下使用它们。在本文中,我想让他们参考领域模型实现的上下文,这通常是我们系统的核心。我们想拥有一颗干净的核心,不是 icon
  • 实体是我们应该首先放入业务逻辑的自然场所。在本文中,我们将讨论领域驱动设计中实体的角色和生命周期。 一般公司转向领域驱动设计的最大原因是因为他们的业务具有必要的复杂性。为了管理业务逻辑复杂性,方法是使用面向对象的编程概念来模拟对象之间的复杂行为;  icon
  • 这里有一些关于DDD的想法。我真的很喜欢DDD(领域驱动设计)的思想和原则,我真的建议你去研究它。这就是为什么现在是新博客的时候了。我们称之为C#开发人员DDD的实用介绍。这是系列的第一篇文章。这篇文章介绍了DDD以及如何构建领域模型。那么,什么是DDD?您可能知道缩写的含义 icon
  • 战术设计是一组在实施中使用的技术资源域模型,这些资源必须应用在一个单一的有界上下文中。如果正确使用战术设计标准,您实际上可以丰富您的领域模型,从而清晰地反映您的业务。请参阅下面的主要构建模块: 实体 icon
  • 数据的正确性和执行特定领域的业务规则的能力是软件开发的几个方面之一,几乎任何项目都是如此。由于很难想象任何不需要某种验证的非hello-world应用程序,解决这个问题对整个项目的成功至关重要。当然,这样的核心概念必然会影响整体架构,所采取的任何方法都应确保只使用有效数据在整个代码中 icon
  • Typescript提供了一系列用于构建富域模型的工具。然而,有很多方法可以解决这个问题,并且需要解决一些棘手的挑战。任何方法必须解决的主要挑战是: 序列化/反序列化:来自持久性和传输层的数据是无类型的,需要进入“类型安全区域” 处理聚合,值对象和列表 icon
  • icon
  • 对象更多是关于行为还是数据?从外部看,数据是隐藏的,行为是公开的。我们看到投入转化为产出。但看不到任何倍隔离的数据;我们也不知道这些数据的存储位置或存储方式。数据库表更多是关于行为或数据信息?它们是简单的数据结构。从外部看,数据是暴露的,没有任何行为,无论可见或隐含的行为。对 icon
  • 贫血模型Anemic Model是一种领域模型,其中领域对象包含很少或没有业务逻辑。这个模型最初由Martin Fowler描述,他认为这种做法是反模式。 这种反模式的根本恐怖之处在于它与面向对象设计的基本思想相悖; 这是将数据和过程结合在一 icon
  • 人们常说#DDDesign中的域模型 icon
  • 问题:如何设计对象,子系统和系统,以便这些元素的变化或不稳定性不会对其他元素产生不良影响?解决方案:确定预测变化或不稳定的点,分配责任以围绕它们创建稳定的接口。在我看来,这是与其他GRASP原则间接相关的最重要的原则。目前,最重要的软件指标之一是易于更改。作为架构师和程序员, icon
  • Bean验证是在Java生态系统中实施验证逻辑的事实上的标准,它是一个很好的工具。但是,在最近的项目中,我对Bean验证进行了更深入的思考,并确定了一些我认为是反模式的实践。 反模式免责声明就像每一次关于模式和反模式的讨论一样 icon