重新敲一遍代码,胜过拷贝粘贴

如今这个时代,Google 和 Stack
Overflow 已经成为了很多开发者不可或缺的工具。但是最近,后者貌似名声坏了。一方面,是因为表面上特别、有时候会偏离适度的原则。说得更中肯些,取笑别人是「十足的
Stack Overflow 式的开发者」的现象,明显增多了。

说简单点儿,有些人在 Stack Overflow 上扔代码、还大肆拷贝、粘贴回答里的代码示例,他们最应该得到这个称号。他们干起活来可能相当麻利,但是对于他们所面对的问题、以及他们乐于使用的解决方案,缺乏应有的理解。

当然,代码的拷贝粘贴不应该都被鄙视。我敢肯定,大部分阅读本文的读者(当然包括写本文的我!)耻于把 Stack Overflow
上的代码片段、原封不动地拷贝到他们自己的代码库里。那又能怎样呢,人家的代码为什么要这样写,我们或许根本没有兴趣去了解。从本质上讲,不是每一项技术
都让人着迷,毕竟,deadline 有时过于急迫。

但是,果真如此的话,是不是意味着,我们渐渐就变成了十足的 Stack Overflow 式的开发者?对头!我们肯定不希望走到这一步!

缓解对策

每当你想把 Stack Overflow 的一段代码拷贝到项目里时,别急着断网,而要考虑下面的技巧。

不要使用剪贴板。不要拷贝和粘贴。而是把你找到的代码,重新敲一遍。

是的,这要多花些时间。和你简单地敲击 Ctrl+C/Ctrl+V 相比,这肯定笨拙不堪。或许没有多少意义:如果最终结果是一样的,那么,代码的转移是否通过了剪贴板,又有多大的关系呢?

理由

无论如何,我坚持认为,敲一遍代码,意义十分深远。按照重要程度,下面列出我的理由:

  • 重新敲一遍,要比拷贝粘贴慢,这实际上非常好。如果你发誓不再使用剪贴板了,就不会只是寻找 Google 给出的第一条 Stack Overflow 的结果。你将权衡不同的解决方案,正常情况下,你将倾向于更短、更简洁的方案。
  • 在你敲代码时,你不可能完全无意识地敲着。不管你是否愿意,你都将潜移默化地吸收一部分知识,因为当代码从浏览器转移到编辑器或 IDE
    时,也是在你的眼睛和大脑之间流动。你下意识地会对部分信息感兴趣,并梳理清楚,便于今后使用。即使你不想这样做,你也会学到点儿东西。
  • 最重要的、也是几乎可以肯定的是,你自己敲的东西不等同于原始代码片段的完全拷贝。在你敲代码的过程中,只要你遵从项目正在采用的、特定的风格规

    范,那么,你将不可避免地偏离原始代码。更有可能发生的是,你也会做出更大的修改。你将替换调用工具函数的常见模式。为了更好的可阅读性,你将重新组织代
    码。你将添加注释、或抽出功能,让其更加自文档化(self-documenting)。甚至改善并个性化,这样,你就能抽象并多次复用。

此后,你刚才敲好的代码,就不只是你从网上找到的代码。它成了你自己的代码。

来源:51CTO

时间: 2024-09-20 13:47:43

重新敲一遍代码,胜过拷贝粘贴的相关文章

如何与资源管理器互动剪切/拷贝/粘贴文件

一.本文将向读者介绍下面两个问题的解决方案: 1,用户在资源管理器(Windows Explorer)中剪切/拷贝(Cut/Copy)文件,然后在自己的应用程序中进行粘贴(Paste)操作: 2.用户在自己的应用程序中剪切/拷贝文件,在资源管理其中粘贴操作. 二.本文中的代码编写工具及测试环境: 1,VC6.0, Platform SDK(无须MFC): 2.Windows 2000. 三.概述 我们知道,在Windows中可以通过剪贴板(Clipboard)来共享和传递数据,比如在资源管理器(

如何限制用户拷贝粘贴文档? C/S下

问题描述 做的一个程序,因为关系到一些报销所以怕里面的文档重复,如何限制用户不能拷贝/粘贴文档谢谢!! 解决方案 解决方案二:把文档传到服务器上保存,尤其是你担心被复制的那些解决方案三:方法有三,你可以看看哪个合适:1.在数据库的ACL里面对需要限制的人或群组勾上禁止复制文档的选项,2.在文档里面加一个域,名字叫"KeepPrivate",所有人都无法复制此文档,3.在视图的querypaste事件里面写上代码,禁止粘贴.解决方案四:$KeepPrivate="1"

前端-sublime的左侧栏不能拷贝粘贴文件

问题描述 sublime的左侧栏不能拷贝粘贴文件 在sublime的左侧栏,无法从一个文件夹复制文件到另外一个文件夹 应该装什么插件?

windows-nodejs上每敲出一个代码都会返回undefined

问题描述 nodejs上每敲出一个代码都会返回undefined 如题,我用windows的nodejs,在cmd下进入node,敲出一行代码都会返回undefined,这是为什么? 解决方案 因为返回值是undefined 解决方案二: 那是正常的亲,你用控制台也是一样的好么 解决方案三: 你自己到浏览器的console里面也是一样的

看视频自学java web,照着视频敲了个代码但是没通过

问题描述 看视频自学java web,照着视频敲了个代码但是没通过 看视频自学java web,照着视频敲了个代码但是没通过 解决方案 没引用包哈,加一行 <%@ page import="com.lwq.javaweb.*" %> 解决方案二: jsp里面没有引入包 解决方案三: 页jsp页面使用Java类时也需要import引入下这个类的.方法为 <%@ page language="java" import="Person类含包名的

Android编程经典代码集锦(复制,粘贴,浏览器调用,Toast显示,自定义Dialog等)_Android

本文实例总结了Android编程经典代码段.分享给大家供大家参考,具体如下: 1. 复制,粘贴 clip = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE); clip.setText("copy"); // 复制 clip.getText(); // 粘贴 2.调用浏览器 核心代码如下: Intent intent = new Intent(); intent.setAction("android.

每天敲两个代码-C源程序100例(加油)

编译命令 gcc 1.c -o 1 (-std=c99) gcc 3.c -lm -o 3 ./1 地址: http://fightingyanping.blog.163.com/blog/static/116572703201162633134771/ http://blog.csdn.net/zaojiahua/article/details/8684523 2014.2.28 [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填

Lisp的本质

简介 最初在web的某些角落偶然看到有人赞美Lisp时, 我那时已经是一个颇有经验的程序员.在我的履历上, 掌握的语言范围相当广泛, 象C++, Java, C#主流语言等等都不在话下,我觉得我差不多知道所有的有关编程语言的事情.对待编程语言的问题上, 我觉得自己不太会遇到什么大问题.其实我大错特错了. 我试着学了一下Lisp, 结果马上就撞了墙.我被那些范例代码吓坏了.我想很多初次接触Lisp语言的人, 一定也有过类似的感受.Lisp的语法太次了.一个语言的发明人, 居然不肯用心弄出一套漂亮的

Coding 孙宇聪:《人,技术与流程》

我先做一下自我介绍,我是 07 年加入的 Google,在 Moutain View 总部任Google SRE,今年年初回国加入 Coding. 在 Google 我参与了两个 Project, 第一个就是 Youtube, 其中包括 Video transcoding, streaming 等,Google 的量很大,每个月会有 1PB 级别的存储量,存储,转码后,我们还做 Golbal CDN ,最大的时候峰值达到 10 TB,我们在全球 10 万个节点,每台机器都是 24 核跑满状态.然