首页
学习
活动
专区
圈层
工具
发布

软件设计原则——DRY(Dont Repeat Yourself)和KISS( Keep It Simple, Stupid)

在本文中,我将探讨软件设计原则及其优点,为什么设计原则对我们有用,以及如何在日常编程中实现它们。我们将探索DRY和KISS软件设计原则。...DRY(Don’t Repeat Yourself)原则——不要重复你自己 DRY代表“不要重复自己”,这是软件开发的一个基本原则,目的是减少信息的重复。...干原理是这样表述的:“每一个知识或逻辑必须在一个系统中有一个单一的、明确的表示。”...这样让管理代码变得很困难的,如果任何逻辑发生变化,那么我们必须在代码中的所有地方进行更改,从而浪费时间。 如何实现DRY 为了避免违反DRY原则,需要把你的系统分成几部分。...如何实现KISS原则 为了避免违反KISS原则,尝试编写最简单的代码。为您的问题考虑许多解决方案,并选择最好的解决方案,并将其转换为代码。

4.5K20

APIServer dry-run和kubectl diff

这两个特性是Kubernetes声明模型的重大改进。...APIServer dry-run 实施APIServer dry-run来解决这两个问题: 它允许对apiserver的个别请求标记为“dry-run”, apiserver保证干运行请求不会被持久存储...如何启用它 通过功能门(feature-gate)启用服务器端干运行。...如何使用它 你可以使用kubectl apply --server-dry-run在kubectl触发该功能,它将使用dryRun标志装饰请求,并返回应用的对象,如果失败则返回错误。...kubectl diff可以满足这方面的需要,通过显示当前“实时”对象与新“干运行”对象之间的差异。只关注对对象所做的更改,服务器如何合并这些更改,以及变异webhook如何影响输出,这非常方便。

2.5K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    可能被你误解的 DRY 原则

    1.2 如何理解 DRY 原则 DRY 针对的是知识和意图的复制,强调多个地方表达的东西其实是相同的,只是表达方式不同。 Q:知识和意图 这两个词比较抽象,如果具体到编码,指代的什么呢?...实际上,DRY 原则对工作、生活中的问题也有着指导作用,比如我写本文由于要作用于博客、ppt 等场景,创建了多个副本,设想一下,如果我要修改某个章节,是不是每处都要改?到时候我或许会抓狂。...2 DRY 原则描述了哪些重复现象 2.1 代码重复 “复制粘贴”代码只是代码重复的一种特例,很多情况下,都不是你想的那样。...不得不冗余的地方,将相关的逻辑尽可能控制在局部,来减少重复带来的风险。 2.4 表征重复 主要描述的和外部打交道的时候,不可避免的重复。代码必须持有外部系统已经蕴含的知识(表征)。...3 总结 DRY 原则描述的重复是 知识和意图 的重复。包含 代码重复、文档重复、数据重复、表征重复、开发人员重复。

    1.6K20

    重温设计模式系列(三)面向对象设计原则

    (某些原则,也可以用在系统级,模块级等类型的设计中应用) 1、代码抽象三原则 1.1 DRY原则(Don't repeat yourself) 意思是:不要重复自己。...2、GRASP原则 GRASP(General Responsibility Assignment Software Patterns),中文名称:“通用职责分配软件模式”,核心是自己干自己能干的事,自己只干自己的...的实例 e、A 频繁使用 B 例如:因为订单(Order)是商品(SKU)的容器,所以应该由订单来创建商品。...高内聚以为这拆分出更多数量的类,但是对象之间需要协作来完成任务,这又造成了高耦合,反过来依然。该如何解决这个矛盾呢?...翻译为:不要联系我,我会联系你。对应于软件设计而言,最著名的就是“控制反转”(或称为“依赖注入”),我们不需要在代码中主动的创建对象,而是由容器帮我们来创建并管理这些对象。

    49930

    以更好的方式使用 Vue Mixins

    在介绍我的方法之前,我想先介绍一下使用mixins的优点和缺点。 优点 扩展了代码重用的DRY原则。我们可以在不同的组件中重复使用相同的业务逻辑。...可重写的上下文,我们必须注意不要因为相同的名称覆盖一些Mixin的方法,getter或数据; 缺点并不是避免使用 mixins 的一个关键原因,但我们应该了解它们。...建议使用基于这些技巧的方式来减少缺点所带来的影响。 在 method、getter、value和 props 名字开头使用前缀。它展示了 mixin 相关的功能。...使用前缀可以避免组件的方法意外覆盖mixin方法和属性。 大项目中的开发者对组件代码的透明和方便的阅读。...总结 Mixin是一个有用的工具,但它会使我们的项目特别是在大项目中变得更加复杂、不灵活和不透明。使用这种方法是一种很好的实践,可以更加明确mixin含义并避免一些由于不明确导致的bug。

    95220

    软件开发: 高效策略-代码复用与DRY原则

    本文将探讨代码复用的概念、DRY原则的重要性以及如何在实际项目中有效地应用这些原则。 代码复用的概念 定义 代码复用指的是在软件开发过程中多次使用同一段代码,而不是重复编写相似的代码。...DRY原则的重要性 定义 DRY原则,即“不要重复自己”,强调在代码中避免重复。该原则认为,每一片知识或逻辑应该有一个唯一的、明确的、权威的表示。...目的 避免冗余:确保代码中不会出现重复的逻辑或功能。 提升可维护性:修改时只需更改一处,减少维护难度和错误风险。 如何有效应用代码复用与DRY原则 1....标准化和模块化设计 设计可复用的组件和模块,确保它们具有清晰的接口和文档。 使用设计模式和架构原则来促进代码的模块化和复用。 2....通过代码审查确保团队成员遵守DRY原则。 4. 持续集成和自动化测试 使用持续集成(CI)和自动化测试来确保代码更改不会引入新的错误。 自动化测试可验证复用代码的稳定性和功能性。

    52410

    软件工程的核心原则:KISS, DRY, SOLID, YAGNI

    本文将深入探讨四个核心原则:KISS(保持简单,愚蠢)、DRY(不要重复自己)、SOLID(面向对象设计的五大原则)以及YAGNI(你不会需要它)。...模块化设计:将系统分解为独立的模块,每个模块负责单一功能。 清晰命名:使用直观且描述性的命名,使代码自文档化。 DRY原则:不要重复自己 核心理念 DRY原则强调避免代码重复。...实践建议 提取公共逻辑:将重复的代码提取到函数或类中,通过参数化实现复用。 使用设计模式:如策略模式、模板方法模式等,减少代码重复。 自动化测试:确保提取的公共逻辑经过充分测试,避免引入新的错误。...依赖倒置原则(DIP):高层模块不应依赖于低层模块,两者都应依赖于抽象。 实践建议 设计清晰的接口:确保接口只暴露必要的功能,避免不必要的依赖。 使用依赖注入:通过依赖注入实现模块间的松耦合。...保持灵活性:设计系统时考虑未来的扩展性,但避免预先实现。 结论 KISS、DRY、SOLID和YAGNI原则是软件工程中的宝贵指南。通过理解和应用这些原则,我们可以构建更高效、更可靠的软件系统。

    1.2K10

    鹅厂程序员的9个生存法则

    或许有些开发者会想当然地认为,只要代码有重复就是违反 DRY 原则了。真的是这样吗?答案是否定的。实际上,重复的代码不一定违反 DRY 原则,而有些看似不重复的代码也有可能违反 DRY 原则。...DRY 原则的典型代码重复情况有三种:实现逻辑重复、功能语义重复和代码执行重复。下面我们简单分享。...如果我们遵循DRY原则,可以将计算一个数的平方抽象成一个函数,然后在需要计算平方的地方调用该函数,避免了功能语义的重复。...例如,我们可以使用腾讯云CLB来实现负载均衡,使用Kubernetes来实现容器集群,使用分布式数据库来实现数据的高可用性,使用异地多活来实现系统的容灾和备份。...建议定期复盘近期一直在重复做的事情,主动优化掉这些重复的工作内容。 3.2 使用模板和标准化流程 模板和标准化流程是另一种避免重复流程的方法。

    91443

    面向对象设计4原则 原

    DRY(不自我重复) 通过将共同之物抽取出来并置于单一地方避免重复的程序代码。...,也违反DRY原则,系统中会出现大量的重复代码。...下面让我们看看Spring的JdbcTemplate如何遵循DRY原则。上边的模式,有一定的套路,Spring总结了套路,封装成了模板,经过Spring的封装,只需传入Sql,和结果集合转换的类。...当试图避免重复程序代码时,实际也在试着确保你对应用程序中每一个功能和需求只实现一次。 其实无论编写需求,开发用例或者编写代码都应该遵守DRY原则!...(OCP) 通过将共同之物抽取出来并置于单一地方避免重复的程序代码(DRY) 系统中每一个对象应该具有单一职责,所有对象的服务都应该聚焦在实现该职责上。(SRP) 子类型必须能够替换其基类型。

    69020

    程序员修炼之道 — DRY 原则

    要想不重复你自己,需要先不再随时关心代码重用性,保留适当的重复,等到真的重复时,再去抽象可复用的公共代码。 陷阱二:过度设计 我们总是期望通过现阶段的灵活设计来避免未来需求变化后的重复设计与编码。...陷阱三:写一次性代码 如果教条式地理解 DRY 原则,很容易走入一种极端的应用场景:为了不重复而不重复,俗称写一次性代码。一次性代码主要包含以下两种场景:   1....总结: 对于DRY原则,需要明白的是不要为了遵从设计原则而设计,并不是代码重复了就一定是坏的代码,不能以代码是否违反了DRY原则去判断重复代码的好坏。...DRY原则很容易被人们误解为编程时就不应该存在重复的代码,但是DRY原则的真实意图并非如此。一切的原则都允许依托于具体的环境上下文中。...DRY原则是最简单也是最被容易理解的,但是同时也是最难被应用的。DRY原则初衷是为了帮助我们提升代码的可重用性和复用性,可是很多人在使用时却为了不重复而引入了更多其他新的问题。

    82620

    设计原则与设计模式

    里式替换原则 继承关系中子类该如何设计的一个原则。理解里式替换原则,最### 核心的就是理解“design by contract,按照协议来设计”这几个字。...接口隔离原则提供了一种判断接口的职责是否单一的标准:通过调用者如何使用接口来间接地判定。如果调用者只使用部分接口或接口的部分功能,那接口的设计就不够职责单一。...KISS原则 不要使用同事可能不懂的技术来实现代码; 不要重复造轮子,要善于使用已经有的工具类库; 不要过度优化。 YAGNI 原则:要不要做”的问题(当前不需要的就不要做)。...DRY 原则 定义:避免代码重复 分类:逻辑重复、功能语义重复、代码执行重复。实现逻辑重复,但功能语义不重复的代码,并不违反 DRY 原则。...实现逻辑不重复,但功能语义重复的代码,也算是违反 DRY 原则。除此之外,代码执行重复也算是违反 DRY 原则。

    1K40

    这些框架技术的出现都是为了解决什么问题?

    归纳题主的问题: 这个世界上有各种各样的框架,设计这些五花八门框架的初衷到底是什么?我们该不该学习框架,该如何学习使用这些框架? 回答题主的问题: 一、首先,到底什么是框架?...① 首先从DRY原则开始说起 Don't Repeat Yourself,不要重复你的代码。...② 设计模式,更高层级的DRY应用 上面我讲到了DRY原则的几个层次,一般情况下大家也早就这样使用了,属于入门之后很容易自己就想到得一些层次。...其实这正是DRY原则在更高层次上的应用,即结合设计模式来达到更高层次的代码复用效果,进而应用DRY原则。...3)框架,是设计模式的集大成者,是DRY原则的最高应用 先让我们来看一下,使用框架会是什么样的一种体验?

    53620

    打造高质量代码:探究DRY、YAGNI和三次法则

    在日常开发工作中,我们常常会遇到一些使得代码变得冗余、复杂甚至难以维护的情况。为了应对这些问题,软件工程界提出了许多原则和方法来指导我们的编程实践。...其中,DRY原则、YAGNI原则和三次法则是我们编程过程中常常需要用到的三个重要原则。那么,这些原则具体是什么含义,又应该如何在实际开发中运用呢?下面就让我们一起来探讨。...DRY原则:追求高效,摒弃重复 DRY,全称"Don't Repeat Yourself",翻译为中文就是"不要重复自己"。这是一种追求高效、优雅的编程原则。...根据DRY原则,任何形式的信息重复都应当被消除。在实际的编程中,如果同一个逻辑出现在两个或更多的地方,那么我们就需要考虑将这部分逻辑抽象出来,避免重复代码。...DRY原则的优点在于,它能提高代码的可读性和可维护性,降低代码的复杂度,从而提高整个软件的质量。

    1.1K10

    架构师应该遵守的编程原则

    也就是说应该遵循编码规范和常见习惯,按照公认的习惯方式进行组织和命名,不符常规的编程动作应该尽可能的避免。 如何把Kiss原则应用到工作中? 要谦虚, 不要认为自己是个天才,这是你第一个误解。...(Don’t Repeat Yourself) DRY即Don’t repeat ourself(不要重复你自己,简称DRY),或一个规则,实现一次(One rule, one place)是面向对象编程中的基本原则...我对DRY的理解: 尽可能的减少重复,如代码重复、文档重复、数据重复、表征重复、开发人员重复(相同的功能不能的开发人员的优自己的实现) 不重复造轮子,能够使用开源的解决方案的情况下没有必要再实现一遍。...重复的事项,尽可能的使用自动化程序解决。 不要过于优化,过度追求DRY,破坏了程序的内聚性。...这个目标通过尽可能少的使用共享变量来实现。 最大化内聚性 :具有相似功能的代码应该放在同一个代码组件里。 开放/封闭原则 :程序里的实体项(类,模块,函数等)应该对扩展行为开放,对修改行为关闭。

    41220

    设计模式之其他原则

    如何写出满足 KISS 原则的代码? 不要使用同事可能不懂的技术来实现代码。比如前面例子中的正则表达式,还有一些编程语言中过于高级的语法等。 不要重复造轮子,要善于使用已经有的工具类库。...不要过度使用一些奇技淫巧(比如,位运算代替算术运算、复杂的条件语句代替 if-else、使用一些过于底层的函数等)来优化代码,牺牲代码的可读性。...对于 Java 程序员来说,我们经常使用 Maven 或者 Gradle 来管理依赖的类库(library)。...我发现,有些同事为了避免开发中 library 包缺失而频繁地修改 Maven 或者 Gradle 配置文件,提前往项目里引入大量常用的 library 包。...DRY 原则(Don’t Repeat Yourself) DRY 原则的定义非常简单,我就不再过度解读。今天,我们主要讲三种典型的代码重复情况,它们分别是:实现逻辑重复、功能语义重复和代码执行重复。

    44420

    设计模式:面向对象的设计原则下(ISP、DIP、KISS、YAGNI、DRY、LOD)

    本文继续来介绍接口隔离原则(ISP)和依赖倒置原则(DIP),这两个原则都和接口和继承有关。文章最后会简单介绍几个除了 SOLID 原则之外的原则。...依赖倒置原则(DIP) 这个原则的名字中有两个关键词「依赖」和「倒置」,先来看看这两个词是什么意思?...,当有不止一处都会使用时,再考虑重构来进行通用方法的抽取。...DRY DRY 的全称是:Don’t Repeat Yourself ,就是不要重复自己,提升代码的复用性,告别 CV 大法。...代码的重复有两种情况: 1、代码的逻辑重复,语义也重复:这种违反了 DRY ,需要进行重构; 2、代码的逻辑重复,语义不重复:在某个阶段,两段代码逻辑是相同的,但其实是两种不同的应用场景,语义不一样,就没有违反

    69810

    设计模式(07)——设计原则(2)

    ** 后续会有一篇文章,来专门讲解如何在软件设计中,防止过度设计,但对对应该优化,该留好优化点如何实现。...DRY原则 定义 英语解释为:Dont repeat yourself,可以理解为不要写重复的代码,要做好代码的可复用性。...那就需要侵入式的修改代码,需要在所有使用该方法的代码中进行修改,依据 nickname 来特定的进行判断,从而违反了开闭原则。 因此,实现逻辑重复,不能构成代码重复的条件。...答案是这两段代码是重复的代码,虽然这两段代码的实现逻辑不一致,代码编写也不一致,但其仍然违反了 DRY 原则,因为这两段代码所实现的点是一样的,下面我们来看一下这样重复的代码会带来什么隐患。...总结 因此,判断如何一个代码是否是重复的,需要结合具体场景来做判断,在这里,我们可以看到代码实现方式一样不能作为判断依据,因此其实现的语义是不同的,这就是功能语义的判断范畴,而对于重复执行,我们在代码里需要做到尽量避免

    40420

    DRY原则的一个简单实践

    DRY 是软件开发的原则之一,其目的主要是为了避免代码重复,指导开发者尽量以抽象的思维去解决重复,基本上是,当您发现自己一遍又一遍地编写相同的代码时,可能会有更好的方法。...实际案例 让我们先看一个例子,看看这个例子是否可以改进,以及如何通过重构来避免代码重复。 这里有一个简单的Report类,该类接收一些数据并通过控制台以格式化的方式直接输出。...我们这里使用php的一个代码片段来举例,相信大家对代码的结构和想要完成的工作都不难理解,所以为了大家更容易理解,我只对一些下面用到的php函数定义做一个解释: echo() 函数输出一个或多个字符串...,实际情况可能比这要更加复杂的多,但我仅想通过这个实例向大家说明一个问题,那就是避免重复代码的重要性及我们如何通过重构去处理重复代码。...有时候重复一次相同的代码可能没问题,但是当第三次​​我们写出相同的代码时,那就说明是时候重构你的代码了。 结论: 请记住DRY原则,并随时抱着不要重复自己代码的想法去完成开发工作。

    57710

    编写让别人能读懂的代码

    本文的例子基于两个指导原则: 一.DRY(Don’t repeat yourself) 此原则如此重要,简单来说是因为: 代码越少,Bug也越少 没有重复逻辑的代码更易于维护,当你修复了一个bug,如果相同的逻辑还出现在另外一个地方...:使用一个变量来存储返回结果。...这也是函数式编程为什么越来越火的原因之一。 四.关于DRY 平时大家重构代码,一个重要的思想就是DRY。...我要分享一个DRY的反例: 项目在架构过程中会有各种各样的MODEL层,例如:DomainModel,ViewModel,DTO。...如果你能够避免本文总结的反例,你的代码就已经具备了优秀代码应有的基因。当然高质量的代码还需要良好的设计和遵循面向对象编程的原则。

    87880
    领券