热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

复制粘贴比依赖更好

人们过于害怕代码重复,过于憧憬可复用可重用的美好,导致对代码重复发起了一场神圣的战争。如今人们提出了

人们过于害怕代码重复,过于憧憬可复用可重用的美好,导致对代码重复发起了一场神圣的战争。如今人们提出了不同的意见,在Twitter上引起了一场争论:

“我呼吁结束针对代码重复的神圣战争。我们让年轻的开发人员和工程师相信这是有史以来最糟糕的事情,当时间告诉我们所有人时,绝大多数情况下,复制比依赖更可取。”

“特别是当我们通过抽象仅仅相似但不相同的代码来创建大量复杂性时。”

“我通常的过程是:1。编写代码。2.复制粘贴代码,修改新用途。3.再次复制粘贴代码,修改新用途。4.当他们全部工作时,如果所有三种用途都可以合理地合并。......很多时候,由于使用不同,答案是“不”。”

“如果它们不能干净地合并,那么合并它们可能不是正确的做法 - 用例太不同了。试图合并它们是方形圆孔。”

“保留3份代码并不意味着它们不可重用,这意味着它们无法高效且干净地合并。”

“不重复代码是一个重要的学习课程。但是,一旦你学会了它,下一步就是学会平衡增加的复杂性与必要的重复。”

“如果遵循SOLID,DRY原则,则会很好。不要重复(单一)责任。”

“KISS胜过DRY。”

“依赖性是已知的。重复的代码很快就变成了未知的未知数。我更愿意与前者打交道。”

“我认为这在很大程度上取决于你的块有多大。小块这很好,但对于大型例程,它增加了你复制bug的机会。一旦我进入了一个或多个代码屏幕,我通常会尝试尽可能多地使用它”

“如果考虑微服务而不是类,则更为真实:服务通过“主要依赖”实现简单性并通过“明智的责任”实现价值(在这种服务中是愚蠢的。)”

“对于只有少数开发人员的小项目,这是事实。在更大的项目上(假设> 10个开发者)我宁愿尽可能避免代码重复。”

“一个新的CRUD API,在我的工作中只涉及50-100个 SQL 表,重约77,000 SLOC,因此打印2000-2500页,4-5密集教科书。这种几何爆炸在实践中发生的唯一方式是复制/粘贴,它会妨碍对理解的任何信心。”

“如果您复制的代码不是您自己的代码:请不要忘记检查并尊重版权 ”

“rule-of-three:在有三个工作(独立编码)的案例之前,永远不要创建“抽象层”。它也不是抽象,而是提取共性。”

“实用/有意识的代码重复和无意识的代码重复之间存在巨大差异。了解抽象和外部依赖的实际成本需要经验!”

“概括通常是错误的。”

“艺术家通过复制大师来学习。”

“重复通常会在系统内发出巨大的问题。SOLID不是银弹,它总是取决于实现者。”

“耦合/依赖对于维护者来说往往比在代码中改变一些地方要糟糕得多。”

“开源曾经是治愈良方,然后一些白痴开始分叉”

我的意见是:可复用是一个响尾蛇或美女蛇,很美好,但是导致过度设计,有界的上下文原则大于可复用!

你呢?


以上所述就是小编给大家介绍的《复制粘贴比依赖更好》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 我们 的支持!


推荐阅读
  • 服务网关与流量网关
    一、为什么需要服务网关1、什么是服务网关传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关& ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
  • SOA架构理解理解SOA架构,了解ESB概念,明白SOA与微服务的区别和联系,了解SOA与热门技术的结合与应用。1、面向服务的架构SOASOA(ServiceOrien ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 熟练掌握Spring Cloud,终于成为Java工程师的面试门槛 ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
  • BPM是什么软件?1、BPM是BusinessProcessManagement的简称,译为业务流程管理,它是一种以规范化的构造端到端的卓越业务流程为中心以持续的提高组织业务绩效为 ... [详细]
  • zuul 路由不生效_Zuul网关到底有何牛逼之处?竟然这么多人在用~
    作者:kosamino来源:cnblogs.comjing99p11696192.html哈喽,各位新来的小伙伴们,大家好& ... [详细]
  • OAuth2.0指南
    引言OAuth2.0是一种应用之间彼此访问数据的开源授权协议。比如,一个游戏应用可以访问Facebook的用户数据,或者一个基于地理的应用可以访问Foursquare的用户数据等。 ... [详细]
  • 都说Python处理速度慢,为何月活7亿的 Instagram依然在使用Python?
    点击“Python编程与实战”,选择“置顶公众号”第一时间获取Python技术干货!来自|简书作者|我爱学python链接|https:www.jian ... [详细]
author-avatar
mongcheng
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有