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原则初衷是为了帮助我们提升代码的可重用性和复用性,可是很多人在使用时却为了不重复而引入了更多其他新的问题。
个人网站、项目部署、开发环境、游戏服务器、图床、渲染训练等免费搭建教程,多款云服务器20元起。
问题 如果你使用过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很方便,因为它可以让你看到如何处理对象,但如果对象很大,很难准确识别出改变了什么。
原文出处:https://dzone.com/articles/dry-dont-repeat-yourself 我们之前就发过一篇相关的文章:https://www.cnblogs.com/powertoolsteam /p/12758496.html 其中也提到了包括DRY在内的一些软件开发的原则。 DRY 是软件开发的原则之一,其目的主要是为了避免代码重复,指导开发者尽量以抽象的思维去解决重复,基本上是,当您发现自己一遍又一遍地编写相同的代码时,可能会有更好的方法。 结论: 请记住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中,可以说只要你想,一定能把多处一样的代码给抽取出来。
刚开始写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
如果你在最后一步尝试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类中是惟一的。 ?
其他原则 除了 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。
1. python-fire python-fire 是一个三方库,可以将任何 Python 对象变成一个命令行接口。 使用前先 pip install fire 下。 command, main @command def push(repository, all=False, dry_run=False, force=False, thin=False): :param -n, --dry-run: Dry run. :param -f, --force: Force updates. All: {1}, dry run: {2}, force: {3}, thin: {4}' .format(repository, all, dry_run, force, thin -n, --dry-run Dry run. -f, --force Force updates. --thin Use thin pack.
1 TUF 正式从 CNCF 毕业 本周 The Update Framework (TUF) 正式从 CNCF 毕业,现在 TUF 的官方 Python 实现有 954 个 star ,142 个 除了容器生态外,一些语言的包管理器也都在探索基于 TUF 实现其安全更新,包括 Python 的 pip, Haskell 的 hackage 以及 OCaml 的 opam 等。 /kubectl.v1.18 drain --dry-run=true 10.19.47.253 node/10.19.47.253 cordoned (dry run) evicting pod 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) ----
使用 argparse 模块启用 Python 应用程序中的选项。 Python 中的参数解析 使用 解析命令行参数时argparse,第一步是配置一个ArgumentParser 对象。 ", dest="dry_run") PARSER.add_argument("--verbose", "-v", action="count") 这意味着active是False ,除非--active 通过,并且dry_run是True 除非--no-dry-run 通过。 传递所有参数会导致非默认状态: PARSER.parse_args("--active --no-dry-run -vvvv".split()) Namespace(value=None, thing= =None, thing=None, active=False, dry_run=True, verbose=None) 子命令 尽管经典的 Unix 命令“做了一件事,而且做得很好”,但现代趋势是做“
最终被渲染为: $ helm install --dry-run --debug . : {{ .Values.course.python }} 然后我们用debug模式来查看下上面的模板最终会被渲染成什么样子: $ helm install --dry-run --debug . dry-run --debug . install --dry-run --debug . ai: helm install --dry-run --debug --set course.python=ai .
前言 Rails 是使用 Ruby 语言编写的网页程序开发框架 通过为开发者提供常用组件,来简化网页程序的开发 Tip: 类似于 python 的 Django ,perl 的 Dancer Rails 框架有自己的指导思想: 不重复造轮子(DRY) Don’t Repeat Yourself: DRY is a principle of software development which states endless configuration files 这两条编码哲学可以算是历代猴子们的智慧结晶,核心目标只有一个,最大化的减少代码规模,明确核心逻辑,而这样的好处是多多的(编码效率高,Debug也快) DRY
-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
Serverless HTTP 基于腾讯云 API 网关平台,为互联网业务提供 0 配置、高可用、弹性扩展的对外 RESTful API 能力,支持 swagger/ openAPI 等协议。便于客户快速上线业务逻辑,通过规范的 API 支持内外系统的集成和连接。
扫码关注腾讯云开发者
领取腾讯云代金券