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

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

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

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

如何优雅的抄袭代码?天下代码一大抄,这才是正确的姿势_第1张图片

抄袭代码是否正确

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

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

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

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

什么是开源代码

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

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

开源代码的价值

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

对于程序员来说:好用,开发速度快,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技术岗的程序员朋友准备,面试前多看多学,才能在应对面试官的时候侃侃而谈。也许你只是比别人多花了十天时间准备,往后的人生便会大不相同。

你可能感兴趣的:(java)