整洁架构之道
再读整洁架构之道(六)边界
什么是边界 软件架构设计本身就是一门划分边界的艺术。 边界的作用是将软件划分为各种元素,以便约束边界两侧的依赖关系。在项目初期划分的边界可以方便我们将一些决策尽量延后进行,确保未来这些决策不会对系统额核心业务逻辑造成干扰。划分边界同时可以降低或消除架构中不必要耦合,系统中存在的耦合——尤其是那些过早做出的、不成熟的决策所导致的耦合(如采用的框架,数据库等元素,这些细节应该被推迟)是系统最消耗人力资源的部分。 那么如何划分边界呢?可以遵循如下的基本原则: 边界应该划分在那些无关的事情中间:如 GUI 与业务逻辑,这意味着输入输出(GUI)对于业务逻辑来说并不重要, …
再读整洁架构之道(五)软件架构
是时候进入软件架构了。在之前已经介绍了模块/类、组件的相关内容,这一部分会重点介绍软件架构的基本定义。 写在最前面 🌟软件架构师自身需要是程序员,并且必须一直坚持做一线程序员,如果不亲身承受因系统设计而带来的麻烦,就体会不到设计不佳所带来的痛苦,接着就会逐渐迷失正确的设计方向。 什么是软件架构? 软件架构工作的实质就是讨论规划如何将系统切分成组件,并安排好组件之间的排列关系与通信方式,即确定边界。 软件架构设计的目的一般有两个: 为了在工作中更好的对这些组件进行研发、部署、运行以及维护; 如果想设计一个便于推进各项工作的系统,其策略就是要在设计中尽可能长时间地保留尽可能多的可选项; 一个软件系 …
再读整洁架构之道(四)组件构建原则
再读整洁架构之道(四)组件构建原则 第三篇主要叙述如何设计模块和类,在本篇将会更近一步,叙述如何进行组件的设计。 组件是软件的部署单元,是整个软件系统在部署过程中可以独立完成部署的最小实体,组件可以被单独开发,组件化的插件式架构已经成为我们习以为常的软件构建形式了。 组件聚合 组件聚合告诉我们哪些模块和类应该组合在一起形成组件。主要有三个原则: 复用/发布等同原则; 共同闭包原则; 共同复用原则; 复用/发布等同原则REP REP指出软件复用的最小粒度应等同于其发布的最小粒度。 REP是从代码复用角度考虑的,它规定了具备相同主题和功能的代码可以进行组合形成组件。REP建议软件复用应该按照组件来 …
再读整洁架构之道(三)SOLID设计原则
再读整洁架构之道(三)SOLID原则 构建软件模块的主要目标有三个: 使软件可容忍被改动 使软件更容易被理解 构建可在多个软件系统中复用的组件 SOLID原则的主要作用就是告诉我们如何将数据和函数组织成为类,以及如何将这些类链接起来成为程序。SOLID原则指导我们如何设计模块,在架构设计层面,我们会有其他的设计原则。 SOLID原则是指单一职责原则SRP、开闭原则OCP、里式替换原则LSP、接口隔离原则ISP和接口反转DIP。 单一职责原则SRP SRP定义每个软件模块只对一个功能负责,只有一个理由可以让模块改变,任何一个软件模块都应该只对某一类行为者负责。 组件层面的SRP被称作共同闭包原 …
再读整洁架构之道(二)编程范式
再读整洁架构之道(二) 编程范式指的是程序的编写模式,它告诉我们应该在什么时候采用什么样的代码结构。 截止目前,一共出现了三种编程范式:结构化编程范式、面向对象编程范式和函数式编程。 作者认为,每种编程方式不是在给架构设计者的武器库进行扩充,相反,架构师和程序员的武器已经够多了,这三种编程范式是在对他们利用的武器进行限制,这也是为什么他们叫做“范式”。 结构化编程范式 结构化编程对程序控制权的直接转移进行了限制和规范,特别指的是限制了程序中goto的随意使用。 分解程序 Dijkstra希望使用数学推导方法对程序进行推理证明:让程序就成为了一种欧几里得结构,这样可以用一些已经证明的结构串联起新 …
再读整洁架构之道(一)
前记 为什么是再读?因为在这之前笔者已经阅读过一遍架构之道这本书,但当时缺乏项目的锻炼和试错,总觉得读的不深,终于有幸在工作期间接触到了一些项目和需求,更幸运的是项目组在开发时采用的架构正好是整洁架构,详细的说,是事件驱动开发DDD+整洁架构,关于DDD的详细内容将会在之后讨论,笔者就重新阅读了这本书📚,收获颇丰,因此这一个系列,我准备用自己的拙见描述一下整洁架构,更准确的说,应该是是读书笔记,以兹同仁。 这本书的详细地址为:架构整洁之道-罗伯特 C. 马丁-微信读书 (qq.com) 本系列会以图书的章节组织作为思路,跟随作者的脚步逐渐深入,同时,由于是再读,所以不可避免的也会穿插一些图书中 …