這玩意兒我也寫得出來,為什麼我就不是高階程式設計師呢?
Brian Goetz 是 Java 領域的技術大牛,同時也是《Java 併發實踐》一書的作者之一。我最喜歡的一句名言就是他講的。這句話出現在甲骨文公司以《編寫傻瓜式程式碼》為題發表的訪談當中,當時記者問到 Goetz 如何才能編寫出效能良好的程式碼。以下是他給出的睿智回應:
一般來說,在 Java 應用程式當中快速編寫程式碼的方法,就是先寫點傻瓜式程式碼——這類程式碼簡單、乾淨,而且遵循最明確的物件導向原則。
在接下來的發言中,他一直在具體解釋:為什麼嘗試優化程式碼並試圖讓程式碼看起來不那麼傻瓜,正是程式設計師群體中的一種常見錯誤。而在我看來,這更多是一種新手程式設計師常犯的錯誤。
高階開發者的程式碼
如果大家像我一樣,也經歷過初窺門徑的過程,那麼各位應該還記得自己第一次看到高階開發者寫出的程式碼時,心裡想的是:
“這玩意兒我也寫得出來,為什麼我就不是高階開發者呢?”
此後,我花了不少時間想寫出相類似的程式碼,最後發現我根本就做不到。
關於“高階開發者”的疑問,並不在於我無法理解程式碼當中的特徵。相反,我一眼就能明白他們寫的程式碼在說些什麼,因為這些程式碼從根本層面上就是在走傻瓜式路線,誰還看不懂啊。但除此之外,似乎還有更多不同。我記得當時我在想,“這「更多的」究竟是什麼?又是怎麼做到的?”
從那時起,我逐漸學會了編寫傻瓜式程式碼的所有原則與質量保證方法,包括:YAGNI 原則 (You Ain’t Gonna Need It);單一責任原則;DRY 原則(Don't Repeat Yourself);單一級別抽象原則;低耦合等等。我自己,也慢慢成了“高階開發者”。(我其實很討厭「高階開發者」這種說法,因此我始終堅持稱自己為「軟體工程師」,但這又是另一個故事了。)
我學到的最重要的經驗就是:
編寫傻瓜式程式碼實際上非常困難,但一旦實現則會帶來遠超預期的回報。
如何從一里外認出菜雞程式設計師
在《重構:改進現有程式碼設計》當中,Kent Beck 指出:
任何傻瓜都能夠編寫出計算機可以理解的程式碼,但只有優秀的程式設計師能夠編寫出人類可以理解的程式碼。
如果大家遇到精妙無比的單一程式碼行,以及模糊的抽象及 / 或語言特徵時,其背後幾乎總會有一位初級開發者。說實話,後一種情況尤其常見。看到這些程式碼,我彷彿就看到這位程式設計師在強調:
“快來看我!我真的很懂這門程式語言!我在使用預設介面同步本地執行緒 JavaBean 複製建構函式,並配合自定義通用未檢查異常以及跨函式安全強化 JAXB Lombok 程式碼生成!看我厲不厲害!”
以上場景純屬胡說八道,但相信大家能夠明白我的意思。這類程式碼往往來自那些只關注計算機理解,而不重視人類理解的程式設計師。
程式碼的本質,在於向其他人交流並向計算機發出指令;但相較於後者,目前程式碼的前一項作用顯得尤其重要,因為有編譯器負責將程式設計師編寫的內容翻譯成機器語言。一般來講,這種轉換會分多層實現,例如在將 Java 編譯為 ByteCode 時,Java 程式碼首先由 Java 虛擬機器在執行中讀取,並最終將內容翻譯為 0 和 1 的形式。
不過程式碼代表的仍然是人類的語言,除了指導計算機之外,必須也能夠表達任務當中的誰、什麼、何時、哪裡、如何以及為什麼等問題。再舉個例子,即使你的公司被收購了五年多,這些程式碼也仍然得具有實際意義,並確保之前從未見過這些程式碼的新團隊能夠快速開啟並進行功能增強 / 錯誤修復。
是的,編寫傻瓜式程式碼非常困難。隨著時間的推移,我覺得我越來越喜歡這種程式設計風格了。當我在程式碼評論中收到“這程式碼真乾淨!”之類的評語時,我真的感到非常欣慰。我知道我能為整個團隊、乃至未來的程式碼維護者們做的最好的事情,就是編寫傻瓜式程式碼。
需知:
道路千萬條,維護第一條。程式碼不規範,運維兩行淚。
為了幫助大家讓學習變得輕鬆、高效,給大家免費分享一大批資料,幫助大家在成為前端工程師,乃至全棧工程師的路上披荊斬棘。在這裡給大家推薦一個前端全棧學習扣qun:784783012
當真正開始學習的時候難免不知道從哪入手,導致效率低下影響繼續學習的信心。
但最重要的是不知道哪些技術需要重點掌握,學習時頻繁踩坑,最終浪費大量時間,所以有效資源還是很有必要的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901074/viewspace-2646364/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 程式設計師工資高,但為什麼越來越多的人都不再願意做程式設計師呢?程式設計師
- 為什麼高階程式設計師討厭程式設計面試? - Adam程式設計師面試
- 我為什麼不要30歲以上的程式設計師?程式設計師
- [水文] 什麼原因讓我成為一名程式設計師程式設計師
- 程式設計師你為什麼這麼累?程式設計師
- 我學習的程式設計,都給我帶來了什麼?程式設計
- 我是因為什麼原因走向程式設計師這個行業?--十年系列程式設計師行業
- 程式設計師半夜12點沒加班,領導:你來我公司養生呢?網友:憑什麼?程式設計師
- 我為我是個程式設計師而驕傲程式設計師
- 為什麼我害怕資料結構學得好的程式設計師?資料結構程式設計師
- 為什麼程式設計師千萬不要重寫程式碼?程式設計師
- csdn什麼玩意兒嗎
- 如何成為高階java程式設計師Java程式設計師
- [譯] 為什麼我用 JavaScript 來編寫 CSSJavaScriptCSS
- Java程式設計師修煉之路(一)我們為什麼選擇JavaJava程式設計師
- 面試官寫了個雙冒號: : 問我這是什麼語法?Java中有這玩意?面試Java
- 程式設計師工資為什麼普遍很高,原來是因為這個...程式設計師
- 為什麼程式設計師喜歡在半夜寫程式碼?程式設計師
- 我是程式設計師,我用這種方式銘記歷史程式設計師
- iOS開發高階工程師,為什麼Bat面試官偏偏看上了我!iOS工程師BAT面試
- 面試官寫了個雙冒號::問我是什麼語法,Java中有這玩意麼?面試Java
- Java程式設計師工資為什麼這麼高?想要入門Java怎麼辦?Java程式設計師
- 3年程式設計師寫的程式碼被應屆生懟:我能三行搞定!也配叫程式設計師?程式設計師
- 程式設計師 為什麼要堅持寫部落格程式設計師
- 程式設計我們學到了什麼?程式設計
- 程式設計師:為什麼“基礎不牢”成為我薪資被砍的理由?!程式設計師
- 程式設計師你為什麼這麼累? - Controller規範程式設計師Controller
- 程式設計師你為什麼這麼累? - 配置規範程式設計師
- 為什麼我們使用的企業簽名這麼容易掉呢?
- 什麼是程式設計?大道之行也,“程式設計”為公程式設計
- 我,35歲程式設計師,沒想到今年找工作這麼難程式設計師
- 我如何轉行為程式設計師:心態支撐著我程式設計師
- 程式設計師為什麼討厭這些語言程式設計師
- 程式設計師的人生······我先酸為敬程式設計師
- 我為什麼冒險寫QuarkAdmin!
- 我的程式設計師之路程式設計師
- 你好,我是程式設計師程式設計師
- 大前端時代,我為什麼支援前端程式設計師學習原生技術?前端程式設計師