重新敲一遍代碼,勝過(guò)拷貝粘貼
如今這個(gè)時(shí)代,Google 和 Stack Overflow 已經(jīng)成為了很多開(kāi)發(fā)者不可或缺的工具。但是最近,后者貌似名聲壞了。一方面,是因?yàn)楸砻嫔咸貏e、有時(shí)候會(huì)偏離適度的原則。說(shuō)得更中肯些,取笑別人是「十足的 Stack Overflow 式的開(kāi)發(fā)者」的現(xiàn)象,明顯增多了。
說(shuō)簡(jiǎn)單點(diǎn)兒,有些人在 Stack Overflow 上扔代碼、還大肆拷貝、粘貼回答里的代碼示例,他們最應(yīng)該得到這個(gè)稱(chēng)號(hào)。他們干起活來(lái)可能相當(dāng)麻利,但是對(duì)于他們所面對(duì)的問(wèn)題、以及他們樂(lè)于使用的解決方案,缺乏應(yīng)有的理解。
當(dāng)然,代碼的拷貝粘貼不應(yīng)該都被鄙視。我敢肯定,大部分閱讀本文的讀者(當(dāng)然包括寫(xiě)本文的我?。u于把 Stack Overflow 上的代碼片段、原封不動(dòng)地拷貝到他們自己的代碼庫(kù)里。那又能怎樣呢,人家的代碼為什么要這樣寫(xiě),我們或許根本沒(méi)有興趣去了解。從本質(zhì)上講,不是每一項(xiàng)技術(shù) 都讓人著迷,畢竟,deadline 有時(shí)過(guò)于急迫。
但是,果真如此的話,是不是意味著,我們漸漸就變成了十足的 Stack Overflow 式的開(kāi)發(fā)者?對(duì)頭!我們肯定不希望走到這一步!
緩解對(duì)策
每當(dāng)你想把 Stack Overflow 的一段代碼拷貝到項(xiàng)目里時(shí),別急著斷網(wǎng),而要考慮下面的技巧。
不要使用剪貼板。不要拷貝和粘貼。而是把你找到的代碼,重新敲一遍。
是的,這要多花些時(shí)間。和你簡(jiǎn)單地敲擊 Ctrl+C/Ctrl+V 相比,這肯定笨拙不堪?;蛟S沒(méi)有多少意義:如果最終結(jié)果是一樣的,那么,代碼的轉(zhuǎn)移是否通過(guò)了剪貼板,又有多大的關(guān)系呢?
理由
無(wú)論如何,我堅(jiān)持認(rèn)為,敲一遍代碼,意義十分深遠(yuǎn)。按照重要程度,下面列出我的理由:
-
重新敲一遍,要比拷貝粘貼慢,這實(shí)際上非常好。如果你發(fā)誓不再使用剪貼板了,就不會(huì)只是尋找 Google 給出的***條 Stack Overflow 的結(jié)果。你將權(quán)衡不同的解決方案,正常情況下,你將傾向于更短、更簡(jiǎn)潔的方案。
-
在你敲代碼時(shí),你不可能完全無(wú)意識(shí)地敲著。不管你是否愿意,你都將潛移默化地吸收一部分知識(shí),因?yàn)楫?dāng)代碼從瀏覽器轉(zhuǎn)移到編輯器或 IDE 時(shí),也是在你的眼睛和大腦之間流動(dòng)。你下意識(shí)地會(huì)對(duì)部分信息感興趣,并梳理清楚,便于今后使用。即使你不想這樣做,你也會(huì)學(xué)到點(diǎn)兒東西。
-
最重要的、也是幾乎可以肯定的是,你自己敲的東西不等同于原始代碼片段的完全拷貝。在你敲代碼的過(guò)程中,只要你遵從項(xiàng)目正在采用的、特定的風(fēng)格規(guī) 范,那么,你將不可避免地偏離原始代碼。更有可能發(fā)生的是,你也會(huì)做出更大的修改。你將替換調(diào)用工具函數(shù)的常見(jiàn)模式。為了更好的可閱讀性,你將重新組織代 碼。你將添加注釋、或抽出功能,讓其更加自文檔化(self-documenting)。甚至改善并個(gè)性化,這樣,你就能抽象并多次復(fù)用。
此后,你剛才敲好的代碼,就不只是你從網(wǎng)上找到的代碼。它成了你自己的代碼。
英文原文:Don’t Copy & Paste. Retype.