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