热门标签 | 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不是银弹,它总是取决于实现者。”

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

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

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

你呢?


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


推荐阅读
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 阿里面试题解析:分库分表后的无限扩容瓶颈与解决方案
    本文探讨了在分布式系统中,分库分表后的无限扩容问题及其解决方案。通过分析不同阶段的服务架构演变,提出了单元化作为解决数据库连接数过多的有效方法。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • 在Java开发中,保护代码安全是一个重要的课题。由于Java字节码容易被反编译,因此使用代码混淆工具如ProGuard变得尤为重要。本文将详细介绍如何使用ProGuard进行代码混淆,以及其基本原理和常见问题。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 基于Dubbo与Zipkin的微服务调用链路监控解决方案
    本文提出了一种基于Dubbo与Zipkin的微服务调用链路监控解决方案。通过抽象配置层,支持HTTP和Kafka两种数据上报方式,实现了灵活且高效的调用链路追踪。该方案不仅提升了系统的可维护性和扩展性,还为故障排查提供了强大的支持。 ... [详细]
  • 阶段五 3. 微服务项目【学成在线】_第6天 页面部署与课程管理_15 课程计划查询SQL语句解析 ... [详细]
  • 本文探讨了使用Python进行微服务架构设计的合理性和适用性。首先,介绍了微服务的基本概念及其在现代软件开发中的重要性。接着,通过具体的业务场景,详细分析了Python在微服务架构设计中的优势和挑战。文章还讨论了在实际应用中可能遇到的问题,并提出了相应的解决方案。希望本文能够为从事Python微服务开发的技术人员提供有价值的参考和指导。 ... [详细]
  • 本文深入探讨了 Git 与 SVN 的高效使用技巧,旨在帮助开发者轻松应对版本控制中的各种挑战。通过详细解析两种工具的核心功能与最佳实践,读者将能够更好地掌握版本管理的精髓,提高开发效率。 ... [详细]
  • 本文深入解析了Spring Cloud路由网关Zuul的核心功能及其典型应用场景。通过对方志朋老师教材的学习和实践,详细探讨了Zuul在微服务架构中的重要作用,包括请求路由、过滤器链管理以及服务动态扩展等关键特性。同时,结合实际案例,展示了Zuul在高并发和复杂业务场景下的应用优势,为读者提供了全面的技术参考。 ... [详细]
  • 本文探讨了利用Python编程语言开发自动化脚本来实现文件的全量和增量备份方法。通过详细分析不同备份策略的特点,文章介绍了如何使用Python标准库中的os和shutil模块来高效地管理和执行备份任务。此外,还提供了示例代码和最佳实践,帮助读者快速掌握自动化备份技术,确保数据的安全性和完整性。 ... [详细]
  • 解读中台架构:微服务与分布式技术的区别及应用
    中心化与去中心化是长期讨论的话题。中心化架构的优势在于部署和维护相对简单,尤其在服务负载较为稳定的情况下,能够提供高效稳定的性能。然而,随着业务规模的扩大和技术需求的多样化,中心化架构的局限性逐渐显现,如扩展性和故障恢复能力较差。相比之下,微服务和分布式技术通过解耦系统组件,提高了系统的灵活性和可扩展性,更适合处理复杂多变的业务场景。本文将深入探讨中台架构中微服务与分布式技术的区别及其应用场景,帮助读者更好地理解和选择适合自身业务的技术方案。 ... [详细]
  • 如果程序使用Go语言编写并涉及单向或双向TLS认证,可能会遭受CPU拒绝服务攻击(DoS)。本文深入分析了CVE-2018-16875漏洞,探讨其成因、影响及防范措施,为开发者提供全面的安全指导。 ... [详细]
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社区 版权所有