【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

复制粘贴代码,很可能会带来灾难性的后果

  • 2022-03-21
  • 本文字数:1420 字

    阅读完需:约 5 分钟

复制粘贴代码,很可能会带来灾难性的后果

很多人都有过复制粘贴代码的经历,但如果你经常盲目地复制粘贴代码,甚至是复制粘贴自己不理解的代码,很可能会带来灾难性的后果。

当你复制粘贴自己不理解的代码时会发生什么

产生垃圾


这是复制粘贴代码的最大问题。复制粘贴的代码往往包含很多你的程序不需要的额外代码行。如果开发者在没有理解代码的情况下就进行复制,那么代码就会变得很复杂,很难理解。

重用性差


开发软件的真正资产并非代码,而是可重用的代码。因此,从长远来看,简单地复制代码并不能提高生产力。


如果你找到一段代码,却没有理解,仅仅是复制、粘贴,那么你就无法正确地重用这段代码,因为你不知道它的可用性。另外,你也失去了收集可重用代码的机会。

复制 Bug


复制代码的同时,也在复制 Bug。你所复制的代码片段可以在特定的环境下使用,但是你的问题会有所不同。所以,如果你没有理解代码就去复制代码,那么你就会制造出某些 Bug,这些 Bug 会暂时被掩盖。

安全漏洞


我知道有个学弟把 GitHub 的一些代码片段复制和粘贴到了他的项目中,因为他必须查看他公司发送给用户的最后一条信息。


他确实是把那些代码片段复制和粘贴了,但是却没有理解那些代码。他运行了这段代码,并且工作得很好。但问题在于,这段代码可以读取智能手机的所有信息。这个问题影响很大,会让你的应用变得缓慢。

引入新的错误


当你在你的项目中粘贴代码时,重复的代码还可能会产生额外的错误。有时候,可能是你没有把代码粘贴在正确的地方,也可能是你粘贴的代码覆盖了以前的一些代码。如果你不明白这些代码,那么会有很多复制粘贴的方式带来灾难。

许可证问题


开发者经常从一个开源项目中复制粘贴代码。如何不了解复制的源码许可影响,那么就会有很大的问题,对于嵌入式设备来说更是如此,因为在嵌入式设备中,板载软件被认为是一个新的和唯一的副本。这不是 GrammaTech 专攻的领域,但其他公司提供这些类型的分析工具。

一些建议


如果你经常习惯复制粘贴代码,那么以下六点建议希望能对你有所帮助。


  1. 花时间去解决一个问题。你今天花的时间越多,明天要花的时间就越少。

  2. 对复制粘贴的代码进行调试,以便更好地理解。

  3. 在复制的代码中添加一些有用的注释,以便 QA 团队能够更好地查看。

  4. 尝试将代码分解成可重复使用的函数。这将有助于你更好地理解。

  5. 在从开源项目中复制之前,请看清许可证。

  6. 请不要在项目中留下任何复制粘贴的代码的垃圾代码。


额外提示:


一些资深的开发者建议,与其从网站上复制粘贴代码,不如通过重新敲入代码来重写。通过这样做,你可能会发现一些垃圾或无用的东西,并把它从你的代码中删除。这将使代码变得干净,并帮助你更好地理解它。再一个就是,它将帮助你一步一步地理解执行程序。


如果我们仅仅是简单地复制和粘贴,就会失去这些宝贵的经验。请相信我,一点小小的努力,就能使你从好的开发者变成伟大的开发者。

最后几句话


复制代码使我们的生活变得更轻松。但如果不去理解代码的话,就不会让我们成为更好的开发者。一个伟大的程序员,就是在大多数人不能解决困难问题的时候,能够解决困难的程序员。


而一个伟大的开发者并非在一日之内造就的。通过理解代码来解决问题,是提高自己的最好方法之一。


因此,尽管复制粘贴代码的做法很诱人,但在不理解的情况下就复制代码,是不值得开发者花费宝贵的时间。在我看来,这是在自欺欺人。


作者介绍:


Entreprogrammer,科技企业家、变革创造者,热衷于人工智能和区块链。


原文链接:


https://levelup.gitconnected.com/copy-pasting-code-can-be-devastating-ae1c8252c8fa

2022-03-21 15:515727

评论 2 条评论

发布
用户头像
推荐低代码服务编排库 Commander
https://xie.infoq.cn/article/1adf7327403affd58aadb67a4
2022-03-26 09:03
回复
用户头像
复制粘贴就是程序员最卑微的行为,没有之一。
2022-03-23 11:00
回复
没有更多了
发现更多内容

一份前端够用的 Linux 命令

冴羽

vim Linux 前端 Shell 手册

智慧公安情报研判重点人员管控系统开发建设

a13823115807

智慧公安情报研判系统开发

RTC月度小报6月丨编程挑战赛圆满收官;声网上市1周年回顾...

声网

人工智能 月度小报

模块七作业

doublechun

「架构实战营」

图解4种git合并分支方法

xcbeyond

git 分支合并 28天写作 12月日更

LabVIEW目标对象分类识别(理论篇—5)

不脱发的程序猿

机器视觉 图像处理 LabVIEW 目标对象分类 分类算法

架构实战营

ren

C#中的属性

喵叔

28天写作 12月日更

PassJava 开源 (二) :初始化数据库表和搭建管理后台

悟空聊架构

SpringCloud 28天写作 悟空聊架构 12月日更

枚举代替常量

李子捌

28天写作 21天挑战 12月日更

盘点 2021|拥抱变化,不负韶华

架构精进之路

程序人生 盘点2021

数仓与主题域

圣迪

数据仓库 数据 数仓 主题域 主题

用户日活月活怎么统计 - Redis HyperLogLog 详解

程序员历小冰

redis 28天写作 近似算法 12月日更 HyperLogLog

你写,我“奖”|TDengine用户故事征集

TDengine

tdengine 热门活动

晚安吻

mtfelix

28天写作

Java访问修饰符的正确使用姿势

李子捌

Java 28天写作 21天挑战 12月日更

浅谈protobuf

lecury

协议 服务器端开发 protobuf

“全”事件触发:阿里云函数计算与事件总线产品完成全面深度集成

阿里巴巴云原生

阿里云 云原生 函数计算 EventBridge

冬至说焦虑

张老蔫

28天写作

聊聊文章输出的背后

卢卡多多

28天写作 12月日更

低代码数字化运营篇:那些返乡卖农产品的年轻人后来都怎么样了?

优秀

低代码 农产品

解决 ERROR: yaml.parser.ParserError: while parsing a block mapping

liuzhen007

28天写作 12月日更

云原生时代,CNStack 如何解决企业数字化转型难题?

阿里巴巴云原生

阿里云 容器 云原生 技术中台 CNStack

Dubbo框架学习笔记八

风翱

dubbo 12月日更

51 K8S之Helm基础应用

穿过生命散发芬芳

k8s 28天写作 12月日更

基于SLA的测试

QualityFocus

云原生 测试 SLA

清河机械:用宜搭建设工厂数字化系统,节省80%开发成本

一只大光圈

阿里巴巴 低代码 数字化转型 钉钉宜搭

LeetCode 刷完 500 题!我想明白了这些……

Charles

算法 刷题 经验总结 内卷 攻略

再获行业认可,火线安全入选「软件开发安全优秀厂商」

火线安全

端侧AI进化论:HUAWEI HiAI Foundation的奇妙旅程

脑极体

什么是事实?什么是真相?

石云升

28天写作 12月日更

复制粘贴代码,很可能会带来灾难性的后果_其他_Entreprogrammer_InfoQ精选文章