在今天这个时代,谷歌和 Stack Overflow 几乎是每一位开发者最重要的工具。但是近一段时间,Stack Overflow 遭到了一些貌似无理的指责。一方面,这是由于其看似怪异且有时稍欠温和的审核政策。但是还有一些更具针对性的批评则是,一种被人们戏称为 full Stack Overflow developer 的现象正在逐步升温。

简单地说,那些被人们如此称谓的程序员,就像代码搬运工一样,他们编写软件的过程,就是不断地从 Stack Overflow 的答案中复制和粘贴大量代码。他们的工作效率或许很高,但是他们对于所面临的问题以及正在采用的解决方案本身,缺少根本性的理解。

当然,并不是每一类的复制粘贴行为都应该受到嘲讽。我在很大程度上可以确定,阅读这篇文章的绝大多数开发者(包括我本人在内)对于这种一字不差的复制粘贴行为,至少都会抱有一点儿愧疚感。哎,我们之所以这样做的原因,可能是我们对这些代码的工作原理缺乏兴趣。毕竟不是每一项技术都具有原生的趣味性,而且,最后期限有时真的非常重要。

如果事实真是这样,这是否意味着:我们都将逐渐蜕变成 full Stack Overflow developers?这简直太糟糕了!我们当然不愿意看到这种事情的发生。

有效缓解策略

在你工作的时候,如果发觉自己正从 Stack Overflow 搜刮大量代码,在你想要完全切断与互联网的连接之前,不妨考虑采用下面这个技巧:

不要使用粘贴板。不要复制粘贴。相反,你应该将这些代码重新敲击输入一遍

是的,这肯定会花费更多时间。相对于操作 Ctrl+C/Ctrl+V 来说,这个过程一定非常繁琐。从表面上看,你会觉得这样做没有任何意义:如果最终结果都是一样,为什么非要兴师动众地把现成的代码一个接一个地重新敲一遍呢?这样做的价值到底是什么呢?

基本理由与原理

我认为,这样做的理由不仅非常充分,而且意义重大:

  • 事实上,正是由于重新输入要比直接复制粘贴慢得多,才使得这件事情变得有意义起来。如果你不用粘贴板,你就不太可能选择谷歌给出的第一个来自 Stack Overflow 的答案。你将会比较不同的解决办法。在这种情况下,你理所当然地倾向于选择那些更短更简洁的代码。
  • 当你敲击这些代码的时候,你的大脑不可能什么都不想。不管你愿意与否,在这个过程中,你一定会耳濡目染地吸收一些知识和技巧,因为当代码从浏览器转移到你的编辑器或 IDE 时,一定会从你的指尖滑过,从你的眼前飘过。你的大脑会在潜意识里对这些一小片一小片的信息发生兴趣,并且情不自禁地想要理解它们。即使你主观上没想这样做,你还是会学到不少东西。
  • 然而更重要的是,你所输入的这些代码不可能是原来代码片段的完美复制品。在这个过程中,哪怕只是为了满足某种特定编码风格的目的,你都会不可避免地对它们做出必要的调整。
  • 其实,这样做的效果与大幅改变这些代码的效果几乎一样。你会用一些工具函数把一些代码替换掉,你会为了让代码更易读,重新编排代码的样式,你会增加注释,或者,抽取和编写新的函数,使其更具有自描述性。为了方便重用这些代码,你甚至还可能改进和重构它们。

然后,这些你刚刚敲入的代码就不再是你从互联网上找到的那些代码了,它们将真正成为你的代码。


作者:Karol Kuczmarski,软件工程师,就职于谷歌,生活在旧金山。

原文:Don’t Copy & Paste. Retype.

感谢:Qingniu 帮助审阅及完成校对。