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

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

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

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

你呢?


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


推荐阅读
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • NVIDIA Titan RTX深度评测
    NVIDIA的Titan RTX被誉为当前最强大的桌面显卡之一,其卓越的性能和高昂的价格吸引了众多专业人士和技术爱好者的关注。本文将详细介绍Titan RTX的技术规格、性能表现及应用场景。 ... [详细]
  • 前言无论是对于刚入行工作还是已经工作几年的java开发者来说,面试求职始终是你需要直面的一件事情。首先梳理自己的知识体系,针对性准备,会有事半功倍的效果。我们往往会把重点放在技术上 ... [详细]
  • 深入解析:阿里实战 SpringCloud 微服务架构与应用
    本文将详细介绍 SpringCloud 在微服务架构中的应用,涵盖入门、实战和案例分析。通过丰富的代码示例和实际项目经验,帮助读者全面掌握 SpringCloud 的核心技术和最佳实践。 ... [详细]
  • Python 异步编程:ASGI 服务器与框架详解
    自 Python 3.5 引入 async/await 语法以来,异步编程迅速崛起,吸引了大量开发者的关注。本文将深入探讨 ASGI(异步服务器网关接口)及其在现代 Python Web 开发中的应用,介绍主流的 ASGI 服务器和框架。 ... [详细]
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 深入解析Spring Cloud微服务架构与分布式系统实战
    本文详细介绍了Spring Cloud在微服务架构和分布式系统中的应用,结合实际案例和最新技术,帮助读者全面掌握微服务的实现与优化。 ... [详细]
  • 最新计算机专业原创毕业设计参考选题都有源码+数据库是近期作品ling取参考你的选题刚好在下面有,有时间看到机会给您发1ssm资源循环利用2springboot校园考勤系统3ssm防 ... [详细]
  • Spring Cloud学习指南:深入理解微服务架构
    本文介绍了微服务架构的基本概念及其在Spring Cloud中的实现。讨论了微服务架构的主要优势,如简化开发和维护、快速启动、灵活的技术栈选择以及按需扩展的能力。同时,也探讨了微服务架构面临的挑战,包括较高的运维要求、分布式系统的复杂性、接口调整的成本等问题。最后,文章提出了实施微服务时应遵循的设计原则。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 忙而不盲:探索高效工作的艺术
    本文探讨了在日常工作中如何避免盲目忙碌,通过理解和应对稀有事件、管理负面情绪以及明确学习目标,提升工作效率和个人成长。 ... [详细]
  • 容器与微服务基础:快速入门指南
    探索容器和微服务的基础知识,了解如何通过先进的应用性能管理(APM)工具提升监控效能。加入AppDynamics APM的导览,掌握容器与微服务实施及监控的最佳实践。 ... [详细]
  • Spring Cloud因其强大的功能和灵活性,被誉为开发分布式系统的‘一站式’解决方案。它不仅简化了分布式系统中的常见模式实现,还被广泛应用于企业级生产环境中。本书内容详实,覆盖了从微服务基础到Spring Cloud的高级应用,适合各层次的开发者。 ... [详细]
  • Go 通过 Map/Filter/ForEach 等流式 API 高效处理数据
    go,通过,map,filter,foreach,等,流,式,ap ... [详细]
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社区 版权所有