首页 > 其他分享 >软件开发、设计、架构的五大原则

软件开发、设计、架构的五大原则

时间:2023-05-03 13:32:21浏览次数:80  
标签:逻辑 架构 原则 软件开发 Principle 内聚 耦合 五大 单元

唯一不变的就是变化本身。

我们经常讲的系统、子系统、模块、组件、类、函数就是从逻辑上将软件一步步分解为更细微的部分,即逻辑单元, 分而治之, 复杂问题拆解为若干简单问题, 逐个解决。

逻辑单元内部、外部的交互会产生依赖,从而产生了内聚、耦合概念。内聚主要描述逻辑单元内部,耦合主要描述逻辑单元之间的关系。

我们经常讲的高内聚,低耦合,如何做到,做到的标准是什么? 这就是开发、设计、架构的五大原则所体现出的价值,最终达到高内聚,低耦合的软件目标。

耦合

逻辑单元之间存在依赖, 导致改动可能会互相影响, 关系越紧密, 耦合越强,逻辑单元独立性越差。

比如模块A直接操作了模块B中数据, 则视为强耦合, 若A只是通过数据与模块B交互, 则视为弱耦合。

内聚

逻辑单元内部的元素, 关联性越强, 则内聚越高, 逻辑单元单一性更强。 一个逻辑单元应当尽可能独立完成某个功能。

比如有各种场景需要被引入到当前模块, 代码质量将变得非常脆弱, 这种情况建议拆分为多个模块。

高内聚、低耦合

内聚性,又称块内联系。指逻辑单元的功能强度的度量,即一个逻辑单元内部各个元素彼此结合的紧密程度的度量。

耦合性,又称块间联系。指逻辑单元相互联系紧密程度的一种度量。

比如电脑USB口。可以插入USB口工作的设备和电脑都是低耦合性,电脑不依赖于外部任何外部USB设备,只要你符合USB规范,插上就可以用。USB规范就像一个抽象类,所有外部设备必须实现抽象类,确保能被正确调用。

设计模式、SOLID原则等都是为了更好的做到高内聚、低耦合。

SOLID原则

  • S:单一职责原则 (<font color="#00b050">S</font>ingle Responsibility Principle)
  • O:开闭原则 (<font color="#00b050">O</font>pen/Closed Principle)
  • L:里氏替换原则 (<font color="#00b050">L</font>iskov Substitution Principle)
  • I:接口隔离原则 (<font color="#00b050">I</font>nterface Segregation Principle)
  • D:依赖倒置原则 (<font color="#00b050">D</font>ependency Inversion Principle)

上述是面向对象编程的关键原则。诸如此类的设计原则能够帮助开发人员构建更易于维护、扩展的系统。

详细讲解请阅读软件开发、设计、架构的五大原则

本文由IT文艺男(微信公众号itwenyinan) 发布!

标签:逻辑,架构,原则,软件开发,Principle,内聚,耦合,五大,单元
From: https://blog.51cto.com/u_16092064/6241273

相关文章

  • 软件开发、设计、架构的其他原则
    LOD:迪米特法则(LawofDemeter)CRP:合成复用原则(CompositeReusePrinciple)DRY:不要重复你自己原则(Don’tRepeatYourselfPrinciple)KISS:KISS原则(KeepItSimpleandStupidPrinciple)YAGNI:你不需要它原则(Youaren'tgonnaneeditPrinciple)迪米特法则又叫最少......
  • 一文搞懂 x64 IA-64 AMD64 Inte64 IA-32e 架构之间的关系
    想要搞清楚x64、IA64、AMD64指令集之间的关系,就要先了解Intel和AMD这两家公司在生产处理器上的发展历史。x86处理器1978年Intel生产了它的第一款16bit 处理器8086,之后几款处理器名字也都以86结尾,包括80186,80286,80386,80486,这些处理器的架构被统一称为x86架构。其......
  • CS520 计算机架构
    CS520ComputerArchitectureProject4–Spring2023Duedate:5/8/20231.RULES(1)Youareallowedtoworkinagroupofuptotwostudentspergroup,wherebothmembersmusthaveanimportantroleinmakingsureallmembersareworkingtogether.Besides,you......
  • 携程 x TiDB丨应对全球业务海量数据增长,一栈式 HTAP 实现架构革新
    作者:TiDB社区小助手导读携程作为全球领先的一站式旅行平台,旗下拥有携程旅行网、去哪儿网、Skyscanner等品牌。携程旅行网向超过9000万会员提供酒店预订、酒店点评及特价酒店查询、机票预订、飞机票查询、时刻表、票价查询、航班查询等服务。随着业务量迅速增长,携程需要更敏......
  • C#开发 B/S架构的实验室管理系统 云LIS系统(MVC + SQLserver + Redis)
    一、云LIS系统是将各种样本、免疫、临检、放免、及实验用的分析仪器,通过网络管理和传输实验分析过程中全部数据。对每一专业,实现检验申请、样本采集、样本核收、联机检验、质量控制、报告审核到报告发布的全环节的信息化管理平台。二、基于B/S架构的云LIS系统,整个系统的运行基于WE......
  • 使用 Semantic Kernel 实现 Microsoft 365 Copilot 架构
    3月16日,微软发布了微软365Copilot[1]。Microsoft365Copilot将您现有的Word、Excel、PowerPoint、Outlook和Teams与大型语言模型(LLM)的强大功能以及来自MicrosoftGraph和Microsoft365应用的数据相结合,以创建前所未有的体验。正如您在官方视频中看到的那样,Microsoft......
  • 软件开发人员短缺,低代码等新技术或成解决途径
    导读Reveal发布的一份2023年度软件开发人员调查报告指出,开发人员短缺已经连续第二年成为行业最大挑战。该报告基于对2000多名软件开发人员和IT专业人员的调查数据。超三分之一的受访者(37.5%)表示,掌握熟练技能的开发人员在2023年将非常紧缺,其中DevOps工程师......
  • 17、架构师面试题系列之Maven面试专题及答案(18题)
    架构师面试题之Maven专题篇一、Maven有哪些优点和缺点优点如下:1.简化了项目依赖管理:2.易于上手,对于新手可能一个"mvncleanpackage"命令就可能满足他的工作3.便于与持续集成工具(jenkins)整合4.便于项目升级,无论是项目本身升级还是项目使用的依赖升级。5.有助于多模块项目的开发,......
  • SPQA:基于AI的架构
    人工智能将在未来几个月和几年内做很多有趣的事情,这要归功于GPT之后的爆炸。但最重要的变化之一是更换我们现有的软件。我们曾经使我们的业务适应软件的局限性。在这个模型中,软件将适应我们开展业务的方式。基于人工智能的应用程序将与我们今天拥有的应用程序完全不同。新架构将......
  • SWEN20003 Object Oriented软件开发
    SWEN20003ObjectOrientedSoftwareDevelopmentProject2,2023TheUniversityofMelbourneSchoolofComputingandInformationSystemsSWEN20003ObjectOrientedSoftwareDevelopmentShadowPacProject2,Semester1,2023Released:Friday,21stApril2023at4:30......