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

2022 年 3 月 24 日 InfoQ

作者 | Entreprogrammer
译者 | Sambodhi
策划 | 凌敏
很多人都有过复制粘贴代码的经历,但如果你经常盲目地复制粘贴代码,甚至是复制粘贴自己不理解的代码,很可能会带来灾难性的后果。  
1 当你复制粘贴自己不理解的代码时会发生什么
 产生垃圾

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

 重用性差

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

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

 复制 Bug

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

 安全漏洞

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

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

 引入新的错误

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

许可证问题

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

2 一些建议

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

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

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

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

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

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

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

额外提示:

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

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

3 最后几句话

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

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

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

作者介绍:

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

原文链接:

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

点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!

今日好文推荐

开源还有真假?Neo4j 起诉3家公司虚假宣传开源胜诉

起家于俄罗斯的NGINX开源项目宣布禁俄,不知NGINX之父怎么想?

Solid.js 就是我理想中的 React

腾讯看点和微视开始裁员;俄罗斯数据存储告急;中文编写的操作系统“火龙”被质疑抄袭 | Q资讯

点个在看少个 bug 👇

登录查看更多
0

相关内容

程序猿的天敌 有时是一个不能碰的magic
【2022新书】Python手册,275页pdf
专知会员服务
179+阅读 · 2022年3月18日
【2021新书】《用正确的方式学Python》,456页pdf
专知会员服务
77+阅读 · 2021年6月9日
深度学习赋能的恶意代码攻防研究进展
专知会员服务
29+阅读 · 2021年4月11日
专知会员服务
91+阅读 · 2020年12月26日
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
当云原生遇上低代码,云端开发so easy!
停止盲目使用微服务
InfoQ
0+阅读 · 2022年2月27日
是什么原因让你不想换手机?
ZEALER订阅号
0+阅读 · 2022年2月12日
2021 年 Python 的好与坏
InfoQ
2+阅读 · 2021年11月16日
我用Transformer修复代码bug
夕小瑶的卖萌屋
1+阅读 · 2021年9月9日
国家自然科学基金
2+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
Arxiv
58+阅读 · 2021年11月15日
Arxiv
19+阅读 · 2021年4月8日
Arxiv
17+阅读 · 2021年3月29日
Arxiv
23+阅读 · 2020年9月16日
VIP会员
相关VIP内容
【2022新书】Python手册,275页pdf
专知会员服务
179+阅读 · 2022年3月18日
【2021新书】《用正确的方式学Python》,456页pdf
专知会员服务
77+阅读 · 2021年6月9日
深度学习赋能的恶意代码攻防研究进展
专知会员服务
29+阅读 · 2021年4月11日
专知会员服务
91+阅读 · 2020年12月26日
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
相关资讯
当云原生遇上低代码,云端开发so easy!
停止盲目使用微服务
InfoQ
0+阅读 · 2022年2月27日
是什么原因让你不想换手机?
ZEALER订阅号
0+阅读 · 2022年2月12日
2021 年 Python 的好与坏
InfoQ
2+阅读 · 2021年11月16日
我用Transformer修复代码bug
夕小瑶的卖萌屋
1+阅读 · 2021年9月9日
相关基金
国家自然科学基金
2+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
Top
微信扫码咨询专知VIP会员