如何优雅的抄袭代码?天下代码一大抄,这才是正确的姿势

转载 2017年12月05日 20:59:15

你们知道程序员最熟悉,最熟练,最常用的两个快捷键是哪两个吗?没错,估计你现在心中所想的就是:ctrl+c 和 ctrl+v ,俗名为:复制和粘贴。对于大部分程序员来说:复制和粘贴就是他敲代码,写程序员创造伟大产品的左膀和右臂,而复制和粘贴更是形影不离的好兄弟。


所谓,天下代码一大抄,亦不过在程序员心中就是复制和粘贴。更何况我们是身处在一个热爱开源的世界,而程序员更是创造和开创开源世界的积极分子呢。目前,我们身处在共享经济当中,可是殊不知我们这是一个伪共享的时代。共享单车,共享汽车,乃至共享充电宝都不是真正的共享,所谓共享就是把闲置和剩余资源利用起来,进行分享,以达到资源利用,资源价值的最大化。现在的共享经济,都不是把闲置和剩余资源的重复再利用,而是花钱买好的,每天,每月正在造成更大的资源浪费。


但是,代码的开源,技术的开源可以说是真正的共享,但是还不属于经济,毕竟开源太多都是免费的,所以,我们技术开源才是真正的共享鼻祖。有点扯远了,我尽量拉回来。之所以谈这个话题是因为近日加州大学欧文分校、捷克技术大学、微软研究院和美国东北大学的研究人员组成的一个团队开展了一项调查,结果发现,GitHub 上托管的大多数源代码文件实际上是以前所创建的文件的复制版

八名研究人员组成的这个国际团队起初倒不是想研究 GitHub 的重复现象。最初的目标是试图定义代码复制的 “精细度”(即不同的复制版之间多少文件发生了变化),但后来他们发现了 “高得惊人的文件重复率”,于是他们改变了研究方向。

研究人员查看了 450 万个原创(非分支)的 GitHub 项目,这些项目共有 4.28 亿个不同的文件。他们发现,只有 8500 万个文件是独特的,在所有分析的文件中约占 17.63%。

其实 GitHub 的一个使命就是共享代码,所以在 GitHub 平台上发现代码重复率高并不是一个令人吃惊的事情。但是有一点是非常让你警醒的,那就是:

用来构建 GitHub 的源代码控制系统 Git 鼓励项目分支(forking)。然而,GitHub 中出现了大量的代码重复现象,这些代码并没有经历过 fork 机制,而是通过复制粘贴文件、甚至复制粘贴整个库进入的。

很多研究人员也表示了疑问,明明可以 fork 或者依赖使用的,现在大部分人都是复制粘贴文件、甚至复制粘贴整个库到自己的项目,再共享出来,真的是让人有点吃惊。

   开源库的正确用法

由此,我们应该得感觉和意识到一些开源许可证的使用,应该正确使用开源库以及开源代码才可以。不知道有多少开发者意识到了开源库的正确使用方法?我相信现在几乎每个程序员开发的项目中都使用了 GitHub 上的开源库,但是你们尊重开源和版权了吗?一般在应用中应该声明一下使用了哪些开源库,以开源许可证等信息。我发现支付宝在这方面做的就挺好的。比如人家就在应用中有个版权信息模块,专门声明使用了哪些开源库。例如:

看到了吗?支付宝这个应用程序用到的开源库是不是很多,大家也可以研究一下,支付宝用的这些开源库应该都是非常不错,有保证的,以后说不定你也能够用到,这就是学习。我相信大家都没有正确使用和声明开源库这种做法和行为。

   总结

其实通过研究其实我们可以发现:首先,GitHub 本身似乎可以大幅压缩代码库,不至于现在这么庞大。其次,如今在使用从 GitHub 唾手可得的一大批开源项目,开展越来越多的研究工作。但是我们在研究和使用的时候,应该正确使用,而不是乱用

你们知道哪种语言在 GitHub 上代码重复率最高吗?JavaScript 项目含有的重复文件最多,研究团队只查看了用 C++、Java、JavaScript 和 Python 编写的源代码项目。在这四种项目中,JavaScript 项目所含的重复代码最多,94% 的文件是与 GitHub 上托管的另一个文件百分之百相同的克隆版(基于文件哈希)。C++ 排名第二,所有文件中 73% 是其他文件的复制版,而 Python 的代码重用率也有 71%, Java 只有 40%。其实JavaScript 包含最多的重用代码示例,原因很容易解释,那就是 NPM,这是所有客户端和服务器端 JavaScript 项目的事实上的软件包管理器。

所谓天下代码一大抄,但是抄也应该正确的抄,也应该正确的用,在规则和许可下玩才行。不要在没声明的情况下,整体的复制粘贴到你的代码库里,不尊重作者,感觉是你做的似的。



如何优雅的抄袭代码?天下代码一大抄,这才是正确的姿势

【回复“1024”,送你一个特别推送】 你们知道程序员最熟悉,最熟练,最常用的两个快捷键是哪两个吗?没错,估计你现在心中所想的就是:ctrl+c 和 ctrl+v ,俗名为:复制和粘贴。对于...

这才是学习Linux的正确姿势

建议读者范围1、有开发经验者。 2、科研人员(由其Numrical)。 3、动手能力强的。 4、只是好奇,对于Linux只是浅尝辄止的就不建议继续往下看了。相关资料:史上最全的Linux资料包,...

这才是打开软件品质保证工程师(SQA)职责的正确姿势

综合IEEE SQA的定义、ISO9000-3 的相关章节、CMM要求,更为清晰及详细的SQA职责定义应该如下(Daniel Galin《Software Quality Assurance》) ...

如何优雅的抄袭代码!

你们知道程序员最熟悉,最熟练,最常用的两个快捷键是哪两个吗?没错,估计你现在心中所想的就是:ctrl+c 和 ctrl+v ,俗名为:复制和粘贴。对于大部分程序员来说:复制和粘贴就是他敲代码,写程序员...

学习这些设计模式,让你写出更优雅的代码

写代码容易,写出优雅的代码难,写易于维护的、容易扩展的、结构清晰的代码应该是每位开发者努力的目标,而学习设计模式,合理的的使用能让我们离这个目标更进一步。最近看了《Javascript 设计模式与开发...

编写高效且优雅的 PYTHON 代码

Python 作为一门入门极易并容易上瘾的语音,相信已经成为了很多人 “写着玩” 的标配脚本语言。但很多教材并没有教授 Python 的进阶和优化。本文作为进阶系列的文章,从基础的语法到函数、迭代器、...

如何优雅的在 Microsoft word中插入代码

一、工具方法1.打开这个网页PlanetB;亲测需翻墙。方法2.或者谷歌搜索syntax highlight code in word documents,检索结果的第一个。如下图:PS. 方法1和2...

【Unity3D自学记录】 Unity 延迟执行一段代码的较为优雅的方式

在unity中,延时执行一段代码或者一个方法或者几个方法的情况非常普遍。 一般会用到Invoke和InvokeRepeating方法。顾名思义,第一个是执行一次,第二个是重复执行。 看下定...
  • hackdjh
  • hackdjh
  • 2014年12月04日 11:38
  • 4281

如何优雅的插入广告——代码篇

来源:li6185 投稿 当应用发展到一定阶段,一般都会在feeds流中插入广告,来进行广告的变现,这是每个应用都要进行的过程。 比如微信朋友圈,微博,QQ空间等,不列举了,一般有feeds流的都会...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何优雅的抄袭代码?天下代码一大抄,这才是正确的姿势
举报原因:
原因补充:

(最多只允许输入30个字)