好的程序员复制,伟大的程序员偷

仅复制代码可能很危险。但是,这可以说是软件开发中许多其他方面的问题,只要对它们进行不慎处理即可。在这篇文章中,我将讨论以下问题:

  • 复制代码在软件开发中意味着什么?
  • 正确的代码盗窃是什么意思?
  • 错误复制有哪些陷阱?

对于任何程序员来说,作为Stack Overflow此处的问题答案而发布的示例代码通常最终会出现在程序的最终版本中并不是什么秘密。也许您问了一个问题,他们给您发送了一个理想的循环图for也许您找到了一个很好的答案,其中有一段async await适合您的应用程序的c代码

您将需要的最后一本编程书:

图片


当我遇到一条有关盗窃的好处的推文时,我想知道复制代码是否有益?


请注意,我不赞成您随意地从“问答”部分复制代码。有时您可能会因此而遇到问题。但是,正如我们的客人在Anna Lytical播客中向我们展示的那样,该方法可用于快速开发功能原型。

如果您复制代码示例,请留下许可证链接。取决于上一次在Stack Overflow上编辑代码的方式,该代码已获得知识共享许可证版本的许可。最新代码由CC BY-SA 4.0许可,需要参考。

编写一次代码,使其工作一百万次


从Stack Overflow复制代码是窃的一种形式,即从一个或多个项目复制代码并重复使用。查看您询问的程序员,但事实证明,在他的工作中,有5%到10%甚至7%到23%的代码是从其他来源复制的。是否正确借用已经成为讨论的问题。

不管单个项目中实际的借用百分比如何,我们都可以肯定地说代码重复非常普遍。样板代码是在整个项目中定期重复的代码。程序员很可能不会自己每次都键入它。龙目岛这样的图书馆 使减少编写样板的需求成为可能,但事实仍然是:

  • 始终会有部分代码必须在整个项目中一次又一次地出现。



  • 由于这些部分很可能仍需要进行很小的更改,因此无法将这些代码片段删除为单独的函数或依赖项。

说到依赖,我们可以提到库和外部依赖,这是在不复制代码的情况下重用代码功能的有效方法。它的工作原理几乎与复制代码一样,唯一的区别在于,在这种情况下,您不负责维护代码的复制部分的操作。地狱,现在大多数Internet运行在简化开发的各种平台和插件库上。在库中重用代码非常有效,因为它允许每个库做一件事情,并且仍然做得很好。与在科学界撰写作品时应指出所有来源的方式不同,这些图书馆中的许多图书馆都不需要您做任何事情来表明您使用其他人的代码进行编程还是以其他人的代码为基础。

npm JavaScript软件包管理器将这一点发挥到了极致。您可以通过命令行将微小的单功能库(仅几行代码)安装到项目中。您可以获取超过一百万个免费开源软件包中的任何一个,然后开始在应用程序中嵌入功能。

当然,像任何方法一样,此方法也有一个缺点。安装软件包后,您将失去对代码的控制。一些攻击者创建了非常有用的软件包,等到他们获得不错的下载水平,然后调整代码以窃取比特币钱包我们必须向npm工作人员表示敬意,因为他们设法迅速击退了此类攻击。但是,您拥有的外部依赖关系越多,您想象的攻击范围就越大。

即使是堆栈溢出答案也无法避免代码重复。一位独立研究人员发现了一些对Stack Overflow的响应,其中从其他来源复制了代码。在40多个响应中发现了一段Java代码。

好艺人复制,好艺人偷


在艺术界,盗窃也是伟大作品创作的一部分。我记得我去过阿姆斯特丹的梵高博物馆,在那里看到了他的早期作品。我很震惊。但是后来我不知道实际上这些画是受日本画和木刻(木版画)启发的。我认为这是他时代的独特风格,实际上是发展历史的一部分,但不是我所考虑的那种。梵高没有遵循丹麦艺术家已经采取的发展道路,而是使用了他在巴黎发现的日本版画的想法(他使用了建筑构图和笔触样式的想法),并将其结合到了他的作品中。

毕加索(Picasso)的一句谚语是:“好艺术家复制,好艺术家偷”。毕加索本人从非洲和波利尼西亚艺术中汲取了许多创意,并将其与素描相结合。盗窃本身的想法是错误的。确实,将别人的作品称为自己的作品是窃。借来的东西仍然属于别人。您复制样式,它仍然属于所有者。但是,要窃取,您需要将此想法设为自己的想法。宣称自己是某个想法的创造者就是借用。但是毕加索想到,他需要理解并将其编织到他的作品中才能“窃取”它。史蒂夫·乔布斯(Steve Jobs)很喜欢这句话,苹果在他的领导下取得了成功,因为他们窃取了想法,将它们组合在一起并加以改进。

复制代码时,您可能会冒险借用它。如果借用的代码被很好地嵌入并且不会引起错误,则完全将其放置在项目中,但是它可能包含错误,也可能由网络犯罪分子创建,并且有可能将其用于其用途,您将不知道。与错误复制代码(或经修改后复制)相关的风险数量巨大。实际上,对重复代码的投诉可以追踪the窃者。如果您不理解该代码,则可能会最初本来只是一个概念证明的保护上留下漏洞。即使是Stack Overflow上复制最多的一段代码也没有出现bug

另一方面,当您窃取代码时,您肯定知道它的作用。它的核心和功能适合您自己的代码。如果您可以从内存中再次写入它,则表明该代码已正确被盗。这意味着代码返工不仅为您提供了一份副本。她给了你一些新颖的东西。
是的,窃取代码。接受,理解并应用于您的项目。做你的。您可以获取经验,改善项目,甚至可以恢复简历(也就是ctrl + C ctrl + V)。但是,如果您在对新发现的代码及其作用没有绝对了解的情况下进行复制,则会冒使自己的代码变得更糟的风险。



图片
通过参加SkillFactory在线课程,了解如何从头开始获得热门职业或技能和薪资水平提高的详细信息:





All Articles