学习
实践
活动
专区
工具
TVP
写文章

可能被你误解的 DRY 原则

1.2 如何理解 DRY 原则 DRY 针对的是知识和意图的复制,强调多个地方表达的东西其实是相同的,只是表达方式不同。 Q:知识和意图 这两个词比较抽象,如果具体到编码,指代的什么呢? 理解误区: 有些人将 DRY 固化为编码规范,这是狭隘的。 至少,别把它理解为“不要复制粘贴代码”,它和你想的真的不一样。 2 DRY 原则描述了哪些重复现象 2.1 代码重复 “复制粘贴”代码只是代码重复的一种特例,很多情况下,都不是你想的那样。 3 总结 DRY 原则描述的重复是 知识和意图 的重复。包含 代码重复、文档重复、数据重复、表征重复、开发人员重复。 不要过度追求 DRY,破坏了内聚性,这两者很难两头都握住,很遗憾的告诉你,没有规则可言,多向经验丰富的程序员讨教。

45420

程序员修炼之道 — DRY 原则

bug收集:专门解决与收集bug的网站 网址:www.bugshouji.com 设计原则之DRY 原则 DRY(Don’t Repeat Yourself),翻译成中文就是,不要重复你自己。 但是对于DRY原则,会比较容易陷入如下的一些思维陷阱中: 陷阱一:随时关心代码重用性 代码重复通常有以下三种类型:   1. 总结: 对于DRY原则,需要明白的是不要为了遵从设计原则而设计,并不是代码重复了就一定是坏的代码,不能以代码是否违反了DRY原则去判断重复代码的好坏。 DRY原则很容易被人们误解为编程时就不应该存在重复的代码,但是DRY原则的真实意图并非如此。一切的原则都允许依托于具体的环境上下文中。 DRY原则是最简单也是最被容易理解的,但是同时也是最难被应用的。DRY原则初衷是为了帮助我们提升代码的可重用性和复用性,可是很多人在使用时却为了不重复而引入了更多其他新的问题。

7920
  • 广告
    关闭

    热门业务场景教学

    个人网站、项目部署、开发环境、游戏服务器、图床、渲染训练等免费搭建教程,多款云服务器20元起。

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

    APIServer dry-run和kubectl diff

    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很方便,因为它可以让你看到如何处理对象,但如果对象很大,很难准确识别出改变了什么。

    1.1K10

    让你的Django应用变DRY的几个最佳实践

    目前在Python的Web框架中被应用最广泛的就是Django和Django REST Framework. 这两种框架都提供了非常健壮的功能,能满足Web开发的各个方面。 DRY是Don't-Repeat-Yourself的缩写,是一种代码编写的原则,即不要重复自己的工作。我个人有些代码洁癖,凡是发现我需要复制粘贴代码的地方,就想着能怎样去除重复的工作。 总的来说,要使得你的应用很DRY,要遵循以下两个原则: 全局都应用的变更,收拢到一个地方配置 有少数与其他不一样的行为,将多数行为定义为全局行为,将少数行为分别配置,并尽可能简化配置方法。 Python class PowerOAuthBackend: """请求Power单点登录后跳转的验证""" def authenticate(self, request, user 总结 DRY原则能使你的代码结构好、易维护、易扩展。在日常的开发中,要时刻反思自己的代码是否过于重复,可以精简。在Python中,可以说只要你想,一定能把多处一样的代码给抽取出来。

    43950

    如何在Ubuntu 16.04上使用dry管理和监控Docker容器

    如果你在最后一步尝试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二进制文件不感兴趣的情况下非常有用。

    27660

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

    我们将探索DRY和KISS软件设计原则。 ? DRY(Don’t Repeat Yourself)原则——不要重复你自己 DRY代表“不要重复自己”,这是软件开发的一个基本原则,目的是减少信息的重复。 违反DRY原则 “我们喜欢敲代码”(或者“浪费每个人的时间”):“我们喜欢敲代码”意味着一遍又一遍地写同样的代码或逻辑。 如何实现DRY 为了避免违反DRY原则,需要把你的系统分成几部分。将代码和逻辑划分为更小的可重用单元,并通过在需要的地方调用代码来使用这些单元代码。 DRY的好处 更少的代码是好的,它节省了时间和精力,易于维护,并且减少了bug的几率。 DRY原则的一个很好的例子是企业库enterprise libraries中的helper类,其中每行代码都在库libraries和helper类中是惟一的。 ?

    2K10

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

    其他原则 除了 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

    16310

    Python - poetry(2)命令介绍

    -q):静默模式,不输出任何内容 --ansi:强制 ANSI 输出 --no-ansi:禁用 ANSI 输出 --version (-V):版本号 new 通过创建适合大多数项目的目录结构来启动新的Python update 获取所有依赖项的最新版本并更新 poetry.lock 文件 poetry update 指定依赖项进行更新 poetry update requests toml options --dry-run /my/path", develop = true} options --dev (-D):将包添加为开发依赖项 --path:指定依赖项的路径 --optional:作为可选依赖项添加 --dry-run :不执行安装,仅更新 poetry.lock 文件 remove 从已安装包列表删除指定包 poetry remove pendulum options --dev(-D):从开发依赖项中删除包 --dry-run (-r):要将包注册到的存储库(默认值:pypi)应与config命令设置的存储库名称匹配 --username (-u):访问存储库的用户名 --password (-p):访问存储库的密码 --dry-run

    21220

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • Serverless HTTP 服务

      Serverless HTTP 服务

      Serverless HTTP 基于腾讯云 API 网关平台,为互联网业务提供 0 配置、高可用、弹性扩展的对外 RESTful API 能力,支持 swagger/ openAPI 等协议。便于客户快速上线业务逻辑,通过规范的 API 支持内外系统的集成和连接。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券