4

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

 2 years ago
source link: https://segmentfault.com/a/1190000041140620
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

发布于 2 分钟前

你们知道程序员最熟悉,最熟练,最常用的两个快捷键是哪两个吗?没错,估计你现在心中所想的就是:ctrl+c 和 ctrl+v ,俗名为:复制和粘贴。

对于大部分程序员来说:复制和粘贴就是他敲代码,写程序员创造伟大产品的左膀和右臂,而复制和粘贴更是形影不离的好兄弟。

学编程最重要的是实践,就是写代码、看别人写的代码、再写代码,你看再多的书,不写代码,你还是不会编程。但是写代码也要讲究方法循序渐进,不能刚学了几天语法,就想写个操作系统什么的,树立这种不切实际的目标只会让你的自信受到严重打击迷失自我。

抄袭代码是否正确

所谓,天下代码一大抄,亦不过在程序员心中就是复制和粘贴。那么这么做到底对不对呢?

首先需要肯定的是在软件开发中代码复用情况是非常普遍的,判断这种代码复用是否是抄袭行为的标准,要根据被复用的代码版权协议。这种行为非但不应该受到批评,而且应该受到肯定。只要他抄代码的时候遵守了被抄袭的代码的知识产权或分发协议。

从社会角度而言,这个世界上,最应该受到批评的不是抄袭;恰恰相反,应该是重复劳动。重复劳动是对宝贵社会资源(人力物力财力精力时间等)的极大浪费。

目前,我们身处在共享经济当中,可是殊不知我们这是一个伪共享的时代。共享单车,共享汽车,乃至共享充电宝都不是真正的共享,所谓共享就是把闲置和剩余资源利用起来,进行分享,以达到资源利用,资源价值的最大化。现在的共享经济,都不是把闲置和剩余资源的重复再利用,而是花钱买好的,每天,每月正在造成更大的资源浪费。

什么是开源代码

众所周知,所有的软件都用源码编写,并通过编译最终生成系统或应用。开放源码软件保证所有人可以得到这些代码。这意味着没有一个公司可以完全独占它。开放源码意味着自由选择的权力,而自由选择意味着激发更多创新的能量。

它把控制权交还给使用者和客户。您可以查看系统运作的所有源码,或进行修改,或从中汲取相关的知识。系统缺陷和漏洞可以更快地被发现并加以修正。并且,当客户不满意一个供应商的服务,他们可以选择更好的服务提供商来建设他们的信息基础设施。没有技术的壁垒,也没有市场的垄断。

开源代码的价值

对于学生来说:如果做项目不借鉴别人的基本不可能,因为很多原理毕竟不看别人的代码是很难懂得,而开源的出现,最大的好处就是降低了学习编程的门槛,让这种学校里面的小白能更早的接触许多不错的代码

对于程序员来说:好用,开发速度快,bug少。可以加快开发效率,完成了自己的工作,这样的方式简单快捷,不需要思考如何提取抽象。

对于社会来说:开放源码有利于开发更高质量,更稳定可靠的软件系统。它可以几何级数地提升各个公司的开发能力。大家协同工作,最好的软件将获得认可和胜利。我们不再局限于一个公司的小范围开发,我们在基于互联网的世界范围的合作团体和社区内工作,并通过互联网即时地传递新的想法和代码,促进整个软件开发的进步和繁荣。

因此,开放源码的模式可以帮助开发出更高质量,更安全,更易用的集成软件。它的确使软件开发的步伐迈得更加快速,并有效降低了成本。

但是,代码的开源,技术的开源可以说是真正的共享,但是还不属于经济,毕竟开源太多都是免费的,所以,我们技术开源才是真正的共享鼻祖。

开源库的正确用法

我们应该得感觉和意识到一些开源许可证的使用,应该正确使用开源库以及开源代码才可以。不知道有多少开发者意识到了开源库的正确使用方法?我相信现在几乎每个程序员开发的项目中都使用了 GitHub 上的开源库,但是你们尊重开源和版权了吗?一般在应用中应该声明一下使用了哪些开源库,以开源许可证等信息。只要不违反原作者的版权协议,那么借鉴是完全可以的。

抄袭也是技术活

能从千百万行代码中找到自己想用的那一段,稍作修改变成自己需要的功能,这本身就是一种于百万军中取上将首级的本事。若不对那段代码无比熟悉,至少架构了然于胸,不然他怎么抄?若不是基础比较扎实,经过了大量训练,他又怎么改呢?

干净利落的抄代码不算本事,你要拿着别人的代码来解决自己的问题那才是本事。所谓天下代码一大抄,但是抄也应该正确的抄,也应该正确的用,在规则和许可下玩才行。不要在没声明的情况下,整体的复制粘贴到你的代码库里,不尊重作者,感觉是你做的似的。

当然作为一名程序员,光辉复制可不行,本期给大家推荐一份Java零基础就业宝典,下文内容会详细地介绍这份宝典的提纲内容,涵盖的知识点一目了然,但文章字数有限,需要完整pdf版,点击这里即可免费领取

这份Java零基础就业宝典内容囊括:

Java基础+集合+多线程+JVM

  • Java基础
  • Java 基本功
  • Java 语法
  • 方法(函数)
  • Java 面向对象
  • 文件与I/O流

img

计算机基础

  • 计算机网络

img

数据库面试题总结

  • MySQL
  • Redis

img

常用框架面试题总结

  • Spring面试题总结
  • MyBatis面试题总结
  • Kafka面试题总结
  • Netty 面试题总结

img

优质面经

  • 五面阿里,终获offer
  • 蚂蚁金服实习生面经总结
  • Bigo的Java面试,我挂在了第三轮技术面上.........

img

真实大厂面试现场

img

需要完整pdf版,点击这里即可免费领取。本文专为需要面试JAVA技术岗的程序员朋友准备,面试前多看多学,才能在应对面试官的时候侃侃而谈。也许你只是比别人多花了十天时间准备,往后的人生便会大不相同。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK