1.2 如何理解 DRY 原则 DRY 针对的是知识和意图的复制,强调多个地方表达的东西其实是相同的,只是表达方式不同。 Q:知识和意图 这两个词比较抽象,如果具体到编码,指代的什么呢? 理解误区: 有些人将 DRY 固化为编码规范,这是狭隘的。 至少,别把它理解为“不要复制粘贴代码”,它和你想的真的不一样。 2 DRY 原则描述了哪些重复现象 2.1 代码重复 “复制粘贴”代码只是代码重复的一种特例,很多情况下,都不是你想的那样。 3 总结 DRY 原则描述的重复是 知识和意图 的重复。包含 代码重复、文档重复、数据重复、表征重复、开发人员重复。 不要过度追求 DRY,破坏了内聚性,这两者很难两头都握住,很遗憾的告诉你,没有规则可言,多向经验丰富的程序员讨教。
bug收集:专门解决与收集bug的网站 网址:www.bugshouji.com 设计原则之DRY 原则 DRY(Don’t Repeat Yourself),翻译成中文就是,不要重复你自己。 但是对于DRY原则,会比较容易陷入如下的一些思维陷阱中: 陷阱一:随时关心代码重用性 代码重复通常有以下三种类型: 1. 总结: 对于DRY原则,需要明白的是不要为了遵从设计原则而设计,并不是代码重复了就一定是坏的代码,不能以代码是否违反了DRY原则去判断重复代码的好坏。 DRY原则很容易被人们误解为编程时就不应该存在重复的代码,但是DRY原则的真实意图并非如此。一切的原则都允许依托于具体的环境上下文中。 DRY原则是最简单也是最被容易理解的,但是同时也是最难被应用的。DRY原则初衷是为了帮助我们提升代码的可重用性和复用性,可是很多人在使用时却为了不重复而引入了更多其他新的问题。
问题 如果你使用过svn merge, 那你多半知道它有个–dry-run参数。 其功能是模拟merge过程,看下merge中会发生什么,以便根据情况决定是否要真正执行merge。 不幸的是,git merge并没有提供dry run选项。怎么办呢?
Apply工作组正在努力修复一些差距,而很高兴地宣布Kubernetes 1.13将服务器端干运行(server-side dry-run)和kubectl diff升级到beta。 现有的解决方案是运行kubectl apply --dry-run,但这会运行本地(local)干运行而不与服务器通信:它没有服务器验证,也没有通过验证许可控制器(validating admission APIServer dry-run 实施APIServer dry-run来解决这两个问题: 它允许对apiserver的个别请求标记为“dry-run”, apiserver保证干运行请求不会被持久存储 如何使用它 你可以使用kubectl apply --server-dry-run在kubectl触发该功能,它将使用dryRun标志装饰请求,并返回应用的对象,如果失败则返回错误。 Kubectl diff APIServer dry-run很方便,因为它可以让你看到如何处理对象,但如果对象很大,很难准确识别出改变了什么。
概述 在本教程中,我们将了解 DRY 软件设计原理。 2. 定义 DRY 代表 不要重复自己。这是一个软件开发原则,目标是消除逻辑重复。 一个例子 例如,编写一个包含特定逻辑的函数,然后在我们的代码中多次调用它,就是应用 DRY 原则的一种形式。 这是一个伪代码,它接收两个华氏温度,并在应用 DRY 之前将它们转换为摄氏度: 现在这是应用 DRY 后的相同程序: 我们可以看到,在应用 DRY 之后,将华氏度转换为摄氏度的逻辑在我们的代码中只出现一次 DRY 的优势 DRY 原则的优点包括: 它使代码库更易于维护,因为如果我们想更改逻辑或添加它,我们只需要在一个地方更改它,而不是在出现逻辑的多个位置更改它 它使代码更易于阅读,因为代码中的冗余会更少 DRY 的反面 WET(可以代表我们喜欢打字,每次都写,浪费每个人的时间)是指我们在代码中多次编写相同的逻辑,违反了DRY原则。结果,代码变得更加难以阅读。
在软件开发领域,代码复用和DRY(Don't Repeat Yourself)原则是提高开发效率和软件质量的关键策略。 本文将探讨代码复用的概念、DRY原则的重要性以及如何在实际项目中有效地应用这些原则。 代码复用的概念 定义 代码复用指的是在软件开发过程中多次使用同一段代码,而不是重复编写相似的代码。 DRY原则的重要性 定义 DRY原则,即“不要重复自己”,强调在代码中避免重复。该原则认为,每一片知识或逻辑应该有一个唯一的、明确的、权威的表示。 如何有效应用代码复用与DRY原则 1. 标准化和模块化设计 设计可复用的组件和模块,确保它们具有清晰的接口和文档。 使用设计模式和架构原则来促进代码的模块化和复用。 2. 结论 在软件开发中,有效地运用代码复用和DRY原则是提高开发效率、保证软件质量的关键。
原文出处:https://dzone.com/articles/dry-dont-repeat-yourself 我们之前就发过一篇相关的文章:https://www.cnblogs.com/powertoolsteam /p/12758496.html 其中也提到了包括DRY在内的一些软件开发的原则。 DRY 是软件开发的原则之一,其目的主要是为了避免代码重复,指导开发者尽量以抽象的思维去解决重复,基本上是,当您发现自己一遍又一遍地编写相同的代码时,可能会有更好的方法。 结论: 请记住DRY原则,并随时抱着不要重复自己代码的想法去完成开发工作。
软件开发中的 DRY、KISS 和 SOLID 原则DRY (Don't Repeat Yourself)含义: "不要重复自己"解释: 每一piece of knowledge在系统中应该只有一个明确的 代码示例python 代码解读复制代码# DRY (Don't Repeat Yourself) 原则示例# 违反DRY原则的代码def get_area_circle(radius): return get_area_cylinder(radius, height): return 2 * 3.14 * radius * height + 2 * 3.14 * radius * radius# 遵循DRY 简要总结一下每个原则的核心思想:DRY原则强调避免代码重复,通过重用来提高代码的可维护性。KISS原则提倡简单设计,避免过度复杂化,使代码更容易理解和维护。
DRY是Don't-Repeat-Yourself的缩写,是一种代码编写的原则,即不要重复自己的工作。我个人有些代码洁癖,凡是发现我需要复制粘贴代码的地方,就想着能怎样去除重复的工作。 总的来说,要使得你的应用很DRY,要遵循以下两个原则: 全局都应用的变更,收拢到一个地方配置 有少数与其他不一样的行为,将多数行为定义为全局行为,将少数行为分别配置,并尽可能简化配置方法。 总结 DRY原则能使你的代码结构好、易维护、易扩展。在日常的开发中,要时刻反思自己的代码是否过于重复,可以精简。在Python中,可以说只要你想,一定能把多处一样的代码给抽取出来。
刚开始写views.py模块的代码,一般都是用def定义的函数视图,不过DRF更推荐使用class定义的类视图,这能让我们的代码更符合DRY(Don't Repeat Yourself)设计原则: ? delete(self, request, *args, **kwargs): return self.destroy(request, *args, **kwargs) 瞬间少了好多代码,真够DRY def post(self, request, *args, **kwargs): return self.create(request, *args, **kwargs) 真DRY
软件工程的核心原则:KISS, DRY, SOLID, YAGNI — 深入解析与实践指南 引言 在软件开发的广阔领域中,原则和实践是构建高质量、可维护系统的基石。 本文将深入探讨四个核心原则:KISS(保持简单,愚蠢)、DRY(不要重复自己)、SOLID(面向对象设计的五大原则)以及YAGNI(你不会需要它)。 DRY原则:不要重复自己 核心理念 DRY原则强调避免代码重复。重复的代码不仅增加维护成本,还可能导致一致性问题。通过将逻辑集中在一个地方,我们可以确保变更的一致性,减少错误,并提高代码的可读性。 结论 KISS、DRY、SOLID和YAGNI原则是软件工程中的宝贵指南。通过理解和应用这些原则,我们可以构建更高效、更可靠的软件系统。
如果你在最后一步尝试dry的Swarm功能,这是非常必要的。 第一步 - 安装dry 首先,我们需要在Docker服务器上安装dry。 $ wget https://github.com/moncho/dry/releases/download/v0.9-beta.3/dry-linux-amd64 接下来,将新的二进制文件从dry-linux-amd64 $ dry -v 这将返回版本号和构建详细信息: Version Details Output dry version 0.9-beta.2, build d4d7a789 现在我们已经设置dry,让我们尝试来使用它 现在我们已经看过了dry的Containers,Images和Networks部分,让我们继续讨论dry的监视功能。 有一种将dry连接到运行Docker的远程主机的辅助方法,该方法在dry运行时使用-H选项带有远程主机IP地址。这对于您无法安装dry二进制文件或对安装dry二进制文件不感兴趣的情况下非常有用。
我们将探索DRY和KISS软件设计原则。 DRY(Don’t Repeat Yourself)原则——不要重复你自己 DRY代表“不要重复自己”,这是软件开发的一个基本原则,目的是减少信息的重复。 违反DRY原则 “我们喜欢敲代码”(或者“浪费每个人的时间”):“我们喜欢敲代码”意味着一遍又一遍地写同样的代码或逻辑。 如何实现DRY 为了避免违反DRY原则,需要把你的系统分成几部分。将代码和逻辑划分为更小的可重用单元,并通过在需要的地方调用代码来使用这些单元代码。 DRY的好处 更少的代码是好的,它节省了时间和精力,易于维护,并且减少了bug的几率。 DRY原则的一个很好的例子是企业库enterprise libraries中的helper类,其中每行代码都在库libraries和helper类中是惟一的。
DRY原则:追求高效,摒弃重复 DRY,全称"Don't Repeat Yourself",翻译为中文就是"不要重复自己"。这是一种追求高效、优雅的编程原则。 根据DRY原则,任何形式的信息重复都应当被消除。在实际的编程中,如果同一个逻辑出现在两个或更多的地方,那么我们就需要考虑将这部分逻辑抽象出来,避免重复代码。 DRY原则的优点在于,它能提高代码的可读性和可维护性,降低代码的复杂度,从而提高整个软件的质量。 实际上,这个法则是DRY原则的一个具体实践。当我们在代码中发现重复的逻辑时,可能是时候考虑进行抽象了。 DRY原则、YAGNI原则和三次法则,都是我们在编程实践中需要掌握的重要原则。通过运用这些原则,我们可以写出更高质量的代码,构建出更优秀的软件。
其他原则 除了 SOLID 五大原则之外,还有一些原则也在指引我们设计好的代码架构方面发挥着作用: KISS YAGNI DRY LOD KISS KISS 的全称是:Simple and Stupid DRY DRY 的全称是:Don’t Repeat Yourself ,就是不要重复自己,提升代码的复用性,告别 CV 大法。 很多初级程序员都喜欢面向 Ctrl+C、Ctrl+V 编程,当需求变化的时候,很容易就遗漏一些场景,但即便是复制粘贴也不完全都是违反 DRY 。 代码的重复有两种情况: 1、代码的逻辑重复,语义也重复:这种违反了 DRY ,需要进行重构; 2、代码的逻辑重复,语义不重复:在某个阶段,两段代码逻辑是相同的,但其实是两种不同的应用场景,语义不一样,就没有违反 DRY。
3.1 DRY的核心本质:知识的单一权威来源 核心定义 系统中的每一处知识和业务逻辑,都必须有一个单一、明确、权威的表述。 底层逻辑 DRY的核心是消除知识的重复,而非简单的消除代码行的重复。 常见误区 很多开发者将DRY误解为“不能有任何重复的代码行”,甚至将两段业务逻辑完全不同、仅代码结构相似的代码硬抽成一个通用方法,这是对DRY的严重误解。 DRY;如果两个模块都是计算会员8折折扣,哪怕代码实现略有不同,也属于知识重复,违背DRY。 3.2 常见的DRY违背场景 DRY的违背场景不仅限于代码重复,还包括系统中所有知识的重复,常见的场景有以下几类: 业务逻辑重复:同一个业务规则在多个模块中重复实现,这是最常见的DRY违背场景 配置信息重复 如果不是,就不要为了DRY而DRY 四、KISS原则:简洁是设计的最高境界 KISS原则全称Keep It Simple, Stupid,最早由美国海军在1960年代的工程设计中提出,核心思想是“大多数系统
dry alluvial shrubland and woodland 4 # Mature secondary lowland dry limestone evergreen forest 5 # Mature secondary lowland dry limestone semideciduous forest 6 # Young secondary lowland dry limestone semideciduous forest 15 # Lowland dry noncalcareous shrubland and woodland 16 # Mature secondary dry forest 18 # Dry and moist serpentine woodland and shrubland 19 # Abandoned dry forest plantation 20 riparian forest 47 # Lowland dry riparian shrubland and woodland 48 # Dry grasslands and pastures
三把利剑:help、dry-run、explain 虽然,手写YAML配置文件可能会让刚接触K8S的小白望而却步。但别担心! dry-run:在实际执行命令之前,预先验证命令的效果,模拟执行命令不会对集群产生实际影响,再配合 -o 选项 将结果输出为YAML格式,能快速得到yaml。 的两个常用选项: --dry-run=client -o yaml 将在本地模拟执行命令,并将模拟执行结果以YAML格式输出。 --dry-run=server -o yaml 将命令请求发送到服务器,并由服务器模拟执行命令,返回经过服务器验证的YAML格式的资源定义。 总而言之,--dry-run=client -o yaml适用于本地模拟执行命令并生成YAML配置文件的场景,而--dry-run=server -o yaml适用于获取经过服务器验证的可靠YAML配置文件的场景
有一个名为--dry-run的标志可以帮助您创建整个清单模板。此外,你无法使用试运行创建所有 Kubernetes 资源 YAML。例如,你无法使用试运行创建 Statefulset 或持久卷。 kubectl run mypod --image=nginx:latest \ --labels type=web \ --dry-run=client - kubectl expose pod mypod \ --port=80 \ --name mypod-service \ --type=NodePort \ --dry-run kubectl & dry run 别名为了加快速度,你可以在 或 for 命令中设置别名,如下所示。这样你就不必每次都打字。 alias kdr='kubectl --dry-run=client -o yaml'你可以按如下方式执行该命令。
kubectl drain 在 --dry-run 的时候,可以显示会驱逐掉的 pod 信息了。示例如下: # kubectl v1.18.0-alpha.1 (MoeLove) ➜ bin . /kubectl.v1.18 drain --dry-run=true 10.19.47.253 node/10.19.47.253 cordoned (dry run) evicting pod infra/redis-7c647bfd97-fdk2r (dry run) evicting pod kube-system/coredns-65b546d87d-6jmfp (dry run) evicting pod kube-system/coredns-65b546d87d-pwqvh (dry run) node/10.19.47.253 drained (dry run) 而之前版本中是没有展示被驱逐 cordoned (dry run) node/10.19.47.253 drained (dry run) ----