首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏京程一灯

    软件设计原则

    Gate 原文标题: Software design principles 英文原文: http://programmergate.com/software-design-principles/ 软件设计一直是开发周期中最重要的阶段 在本文中,我们将讨论有助于创建易于维护和可扩展的软件的关键设计原则。 1. 一个实际的场景 假设老板要求你写一个将word文档转换成PDF的程序。 从这篇文章中学到的设计原则 以下是构建应用程序架构时要遵循的最佳设计实践: 将程序划分为几个模块,并在每个模块的顶部添加一个抽象层。

    1.1K30发布于 2019-03-28
  • 来自专栏JusterZhu

    软件设计原则

    当谈论软件设计,有一系列重要的原则和规范,它们像指南针一样指引着开发人员的方向,确保他们构建出高质量、可维护和可扩展的软件系统。 这些原则不仅仅是代码编写的指导,更是一种思维方式,一种哲学,它们帮助我们在面对不断变化的需求和复杂性时保持清晰的思路。 在软件领域,有许多设计原则被广泛应用来指导软件开发和设计过程。 以下是一些重要的软件设计原则: 开闭原则(Open-Closed Principle): 定义:开闭原则指出软件实体(如类、模块、函数等)应该对扩展开放,对修改关闭。 void PayForItem(Item item) { // 使用钱包支付物品 } } public class Item { // 物品的属性和逻辑 } 软件设计原则不仅仅是一组规则 愿这些原则一直伴随着你的编程之路,助你不断成长,创造出更出色的软件。

    55710编辑于 2023-09-27
  • 来自专栏程序生涯

    软件设计原则

    了解设计模式的朋友们,想必都听说过“六大设计原则”吧。其实最经典的 23 种设计模式中或多或少地都在使用这些设计原则,也就是说,设计模式是站在设计原则的基础之上的。 除了最经典的六大设计原则以外,还有一些其他的设计原则也非常重要,本文会一起列举,不断收集,不断更新。 我将尽可能地解释这些晦涩的理论,希望看完本文之后,会让您对这些设计原则稍微加深一些理解。 将以上六大原则的英文首字母拼在一起就是 SOLID(稳定的),所以也称之为 SOLID 原则。 只有满足了这六大原则,才能设计出稳定的软件架构! 共同封装原则(Common Closure Principle - CCP) 应该将易变的类放在同一个包里,将变化隔离出来。该原则是“开放-封闭原则”的延生。 4. 对应于软件设计而言,最著名的就是“控制反转”(或称为“依赖注入”),我们不需要在代码中主动的创建对象,而是由容器帮我们来创建并管理这些对象。 三、其他设计原则 1.

    83410发布于 2020-08-14
  • 来自专栏授客的专栏

    软件设计 软件设计模式之SOLID原则

    软件设计模式之SOLID原则 By:授客 QQ:1033553122 #单一职责原则(SRP) 定义:任何一个软件模块都只对某一类行为者负责 说明:这里“软件模块”,在大部分情况下,可以简单定义为一个源代码文件 #接口隔离原则(ISP) 定义: 1、客户端不应该依赖它不需用的接口 2、类间的依赖关系应该建立在最小的接口上。 接口隔离原则和单一职责原则虽然很类似,但是两个原则还是存在着明显的区别。单一职责原则是在业务逻辑上的划分,注重的是职责。接口隔离原则是基于接口设计考虑。 #依赖反转原则(DIP) 依赖反转原则被称作依赖倒置原则, 定义: 1)高层策略性的代码不应该依赖实现底层细节的代码 2)抽象不应该依赖于细节,细节应该依赖于抽象 说明: 1、什么是“高层”,什么是“细节 依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。

    1.4K20发布于 2021-02-04
  • 来自专栏运维开发王义杰

    软件设计:SOLID 原则

    设计原则是指导软件设计的一般性规则或准则。它们可以帮助开发者编写出结构良好、可维护、可重用、可扩展的代码。 以下是一些被广泛接受和应用的设计原则: 单一职责原则(Single Responsibility Principle, SRP):一个类应该只有一个引起变化的原因。 开放封闭原则(Open-Closed Principle, OCP):软件实体(类、模块、函数等)应该可以扩展,但是不可修改。也就是说,已有的代码在不被修改的情况下可以增加新的行为。 里氏替换原则(Liskov Substitution Principle, LSP):子类型必须能够替换它们的基类型。 以上五条原则被 Robert C. Martin(Uncle Bob)合称为 SOLID 原则。它们是编写面向对象代码的重要准则。

    39930编辑于 2023-08-16
  • 来自专栏TopCoder

    常见的软件设计原则

    设计模式就是软件设计中沉淀出的一些代码设计经验,设计模式主要是基于OOP角度来总结的。 软件设计原则的目的是 代码复用性、代码可扩展性、代码可维护性。 常见的软件设计原则分为:单一职责、开闭原则、接口隔离、里式替换、迪米特原则、依赖倒置原则。 单一职责 一个类或者方法只有一个职责,只有一个引起它变化的原因。 里氏代换原则 里氏代换原则(Liskov Substitution Principle LSP)是面向对象设计的基本原则之一。里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。 如果有些场景下,不能严格按照软件设计原则来实现,起码的隔离性要求还是要满足的,这样才能保证在后续修改时控制影响面,避免改动牵一发而动全身。

    1K30发布于 2021-07-20
  • 来自专栏coderidea

    软件设计原则之SRP:单一职责原则

    本篇介绍软件设计原则之一SRP:单一职责原则。 SRP:单一职责原则 一个类应该只有一个发生变化的原因。 Why 为何把职责分离到单独的类中很重要呢?因为每一个职责都是变化的一个轴线。 如果没有征兆,那么应用SRP或者任何其他原则都是不明智的。 分离耦合的职责 上面,我们把两个职责都耦合进了modem的实现类中。这不是所希望的,但是或许是必要的。 SRP是所有原则中最简单的原则之一,也是最难正确运用的原则之一。我们会自然地把职责结合在一起。软件设计真正要做的许多工作,就是发现职责并把那么职责相互分离。 事实上,我们将要论述的其余原则都会以这样或那样的方式回到这个问题上。 结论 职责定义为变化的原因,对于一组的耦合的职责设计要不要分离,具体要看职责是不是同时变化,我们可以通过接口来分离耦合的职责。

    49630编辑于 2022-06-08
  • 来自专栏IT技术订阅

    软件设计SOLID原则及示例

    SOLID是面向对象编程和设计的五大基本原则的首字母缩写,由Robert C. Martin提出。遵循这些原则有助于开发人员设计出更易于理解、维护和扩展的软件系统。 下面是对SOLID原则的详细解释: 1. 单一职责原则(Single Responsibility Principle, SRP) - 定义:一个类应该只负责一个功能领域中的相关职责。 下面我将通过Java代码示例来说明SOLID原则中的每一项原则如何应用。请注意,这些例子是为了演示目的而简化的,实际项目可能会更复杂。 1. 单一职责原则 (SRP) 问题描述:一个类既负责处理用户登录逻辑,又负责记录日志。 遵循SOLID原则是提高软件质量、降低维护成本的有效途径。在实际应用中,需要根据项目的具体情况灵活运用这些原则,有时候可能需要在设计的清晰度、可维护性和性能之间做出权衡。

    48610编辑于 2024-07-05
  • 来自专栏JavaEdge

    软件设计原则(02)-开闭原则(Open Close Principle,OCP)

    这是Bertrand Meyer在《面向对象软件构造》(Object-Oriented Software Construction)提出,它给软件设计提出极高要求:不修改代码,对扩展开放。 它是为软件实体的未来事件而制定的对现行开发设计进行约束的一个原则

    52340编辑于 2023-09-14
  • 来自专栏技术分享-yangwq

    《如何做好软件设计》:设计原则

    作者:yangwq 博客:https://yangwq.cn # 前言 软件设计是一门关注长期变化的学问,日常开发中需求不断变化,那我们该怎么编写出可以支撑长期变化的代码呢? 个人认为设计原则软件设计的基石之一,所有语言都可以利用设计原则开发出可扩展性、可维护性、可读性高的项目,学好设计原则,就等于我们拥有了指南针,不会迷失在各个设计模式的场景中。 郑晔老师的《软件设计之美》指出:设计模式是在特定问题上应用设计原则的解决方案。我们可以类比设计原则是心法,设计模式是招式,两者相辅相成,虽然脱离对方都能使用,但是不能融会贯通。 本章主要涉及的设计原则有: 1. SOLID原则 2. KISS原则、YAGNI原则、DRY原则 接下来对各个原则进行详细说明,有错误或语义不明确的地方欢迎大家指正。 ## 二、KISS原则、YAGNI原则、DRY原则 这三个原则是偏理论性的概念,主要目的是指导我们学习设计原则后不要过度设计。

    78110发布于 2021-02-06
  • 来自专栏超级架构师

    软件设计】TypeScript 中的 SOLID 原则

    Martin(也称为 Uncle Bob)发明的所谓 SOLID 设计原则。 在本文中,我将通过使用 TypeScript 编写的示例向您介绍这些原则。 单一职责原则 (SRP) “一个类改变的原因不应该超过一个。” 一个类应该有一个目的/责任,因此只有一个改变的理由。遵循这一原则可以更好地维护代码并最大限度地减少潜在的副作用。 这违反了开闭原则。 】公众号 【jiagoushipro】 【超级架构师】 精彩图文详解架构方法论,架构实践,技术原理,技术趋势。 知识星球【职场和技术】微博【智能时刻】智能时刻哔哩哔哩【超级架构师】抖音【cea_cio】超级架构师快手【cea_cio_cto】超级架构师 小红书【cea_csa_cto】超级架构师 谢谢大家关注

    45820编辑于 2022-03-22
  • 来自专栏黑光技术

    一些软件设计原则

    以前本站向大家介绍过一些软件开发的原则,比如优质代码的十诫和Unix传奇(下篇)中所以说的UNIX的设计原则。 以后面我们会面向对象的SOLID原则中会提到我们的依赖倒置原则,就是这个原则的的另一种样子。 我们的程序员或是架构师在设计系统的时候,会考虑很多扩展性的东西,导致在架构与设计方面使用了大量折衷,最后导致项目失败。 这就是依赖倒置原则。 这就好像浏览器并不依赖于后面的web服务器,其只依赖于HTTP协议。这个原则实在是太重要了,社会的分工化,标准化都是这个设计原则的体现。 第二种方法是使用DIP(依赖倒置原则)和ISP(接口分隔原则)设计原则。 无环依赖原则(ADP)为我们解决包之间的关系耦合问题。在设计模块时,不能有循环依赖。

    1.3K30发布于 2019-03-06
  • 来自专栏超级架构师

    软件设计原则】CUPID——快乐的编码

    如果我认为这些天 SOLID 原则没有用,那么我会用什么来代替它们呢?任何一套原则都适用于所有软件吗?我们所说的原则是什么意思? 我相信软件的某些特性或特征使它成为一种乐趣。 特性高于原则¶ 当我开始对 SOLID 的五项原则做出回应时,我设想用我认为更有用或更相关的东西来替换每一项。我很快意识到原则的想法本身是有问题的。原则就像规则:你要么顺从,要么不顺从。 例如,虽然“做好一件事”的 Unix 哲学听起来像单一职责原则,但前者是关于你如何使用代码,而后者是关于代码本身的内部结构。 单一目的与单一职责 ¶ 乍一看,这看起来像是单一职责原则 (SRP),对于 SRP 的某些解释,存在一些重叠。但“做好一件事”是一种由外而内的观点;它具有特定、明确和全面的目的。 单一职责的 SOLID 原则说视图代码应该与控制器代码分开,并且像 Rails 这样的框架将其解释为意味着将它们放在完全不同的位置。这增加了认知负荷,降低了凝聚力,并增加了进行产品更改的努力。

    90410编辑于 2022-07-29
  • 来自专栏韩曙亮的移动开发专栏

    【设计模式】软件设计七大原则 ( 开闭原则 )

    文章目录 一、开闭原则简介 二、开闭原则代码示例 1、商品接口 2、普通商品类 3、折扣商品类 4、测试类 一、开闭原则简介 ---- 开闭原则 : 定义 : 一个 软件实体 , 类 / 模块 / 函数 , 对 扩展 开放 , 对 修改 关闭 ; 抽象与实现 : 用 抽象 构建框架 , 用 实现 扩展细节 ; 优点 : 提高 软件系统 的 可复用性 及 可维护性 ; 开闭原则 是 面向对象 设计 中 , 最基础的 设计原则 , 它指导我们建立稳定灵活的系统 ; 开发新功能时 , 尽量 不修改原有的代码 , 尽量 使用扩展增加新功能 ; 实现 开闭原则 的核心思想 是面向抽象编程 , 不是面向实现编程 , 让类依赖于抽象 , 对于修改来说就是封闭的 ; 通过 面向对象 的 继承 , 以及 多态机制 , 可以实现 对 抽象 的 继承 , 通过 重写改变其固有方法 , 或 实现新的扩展方法 ; 二、开闭原则代码示例 '}'; } } 3、折扣商品类 如果要添加一个商品打折功能 , 不能直接修改 IGood 接口 , 或 NormalGood 类 , 只要修改了 , 就给之前的功能带来了隐患 ; 根据开闭原则

    2.5K10编辑于 2023-03-29
  • 来自专栏学习与分享

    软件设计原则:耦合与内聚

    耦合和内聚是软件设计中两个至关重要的概念,它们直接影响着代码质量和系统的可维护性。本文将深入探讨耦合和内聚的含义,以及如何在软件设计中达到良好的平衡。 什么是耦合? 耦合与内聚的平衡 在软件设计中,耦合和内聚并非对立的关系,而是需要平衡的。高内聚度通常伴随着低耦合度,因为一个功能单一的模块不容易受到外部变化的影响。 结语 耦合与内聚是软件设计中需要深入理解和恰当平衡的概念。通过降低模块之间的耦合度,提高模块的内聚性,我们可以构建出更加健壮和可维护的系统。

    1.5K10编辑于 2024-02-20
  • 来自专栏运维开发王义杰

    软件设计: 探讨复杂性下沉原则

    软件设计中,复杂性下沉(Complexity Sink)是一个关键概念,它指导开发者如何合理分配和管理软件系统中的复杂性。本文将深入探讨复杂性下沉的概念、它的重要性以及如何在实际项目中有效实施。 结论 复杂性下沉是软件设计中的一个重要原则,它帮助开发者合理地管理和分配系统中的复杂性。 通过层次化设计、封装和抽象,以及服务导向架构,我们可以有效地实施这一原则,从而提高软件的可维护性、稳定性和扩展性。

    32310编辑于 2024-01-26
  • 来自专栏小菜良记

    软件设计原则讲解,昭昭在目!

    忆往昔,学习软件设计原则的时候还是在大学,那时候编程入坑不深, 只觉得可学可不学,毕竟课程有些无聊,看今朝,是自己年轻了! ? 一、UML 图 不要觉得奇怪为什么不讲软件设计原则而说到了 UML 图,因为软件设计原则软件设计模式中你讲到最多的便是利用类图来表示 类与类之间的关系,因此我们需要 先会看,再会理,最后再来写! 什么是 UML 统一建模语言(Unified Modeling Language,UML),是用来设计软件的可视化建模语言,它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。 微信搜:小菜良记 更多干货值得关注 二、软件设计原则 上面铺垫了那么多知识,主角终于可以上场了。我们也不卖关子了,直接来看下我们将要了解到的软件设计原则: ? 里氏代换原则 里氏代换原则:任何基类可以出现的地方,子类一定可以出现。

    54640发布于 2021-01-08
  • DRY 软件设计原则-架构快速进阶教程

    概述 在本教程中,我们将了解 DRY 软件设计原理。 2. 定义 DRY 代表 不要重复自己。这是一个软件开发原则,目标是消除逻辑重复。 一个例子 例如,编写一个包含特定逻辑的函数,然后在我们的代码中多次调用它,就是应用 DRY 原则的一种形式。 DRY 的优势 DRY 原则的优点包括: 它使代码库更易于维护,因为如果我们想更改逻辑或添加它,我们只需要在一个地方更改它,而不是在出现逻辑的多个位置更改它 它使代码更易于阅读,因为代码中的冗余会更少 DRY 的反面 WET(可以代表我们喜欢打字,每次都写,浪费每个人的时间)是指我们在代码中多次编写相同的逻辑,违反了DRY原则。结果,代码变得更加难以阅读。

    32100编辑于 2025-04-05
  • 来自专栏后端从入门到精通

    软件设计风格(干货)-架构师之路(九)

    软件体系结构风格是 描述某一特定应用领域中 系统组织方式 的惯用模式。架构风格定义一个系统家族,即 一个架构的定义、一个词汇表和一组约束。词汇表包含 一些构建和连接类型,而一组约束 指出系统是如何将这些构件和连接件组合起来的。

    1.1K40编辑于 2023-09-05
  • 来自专栏小脑斧科技博客

    软件设计的七大原则

    软件设计的七大原则 为了指导程序员写出优秀的代码,前人已经为我们总结出了七个原则,他们侧重点不同、关注的角度各异,是我们在日常开发中要时刻思考、尽量遵循的优秀设计: 单一职责原则(SRP) 开闭原则(OCP ) 里氏替换原则(LSP) 接口隔离原则(ISP) 依赖倒置原则(DIP) 迪米特法则(LoD) 合成复用原则(CRP) 其中前五个原则就统称为大名鼎鼎的 SOLID 原则。 在实际的软件设计中,实现是多变的,抽象层是稳定的,因此,让模块间都通过抽象的接口或是抽象类来描述依赖,可以很大程度上降低开发风险,提升稳定性,同时也是模块间解耦的有力方法。 使用继承时尽量遵循里氏替换原则。 6. 单一职责原则 6.1 原则描述 单一职责原则是由罗伯特·C.马丁(Robert C. 合成复用原则 9.1 原则描述 合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚合复用原则(Composition/Aggregate Reuse Principle

    2.5K30编辑于 2022-06-27
领券