世界級編程大師Robert C. Martin:代碼質量與其整潔度成正比

Robert C. Martin,世界級編程大師,設計模式和敏捷開發先驅,敏捷聯盟首任主席,C++ Report前主編。20世紀70年代初成為職業程序員,後創辦Object Mentor公司並任總裁。後輩程序員親切地稱之為“

Bob大叔”。


世界級編程大師Robert C. Martin:代碼質量與其整潔度成正比


Martin還是一名多產的作家,至今已發表數百篇文章、論文和博客文章。著有《代碼整潔之道》《代碼整潔之道:程序員的職業素養》《敏捷軟件開發:原則、模式和實踐》《UML:Java程序員指南》等。

世界級編程大師Robert C. Martin:代碼質量與其整潔度成正比

Robert C. Martin

天才少年Bob的成長之路

天才是百分之一的靈感,加百分之九十九的汗水,但那百分之一的靈感往往比百分之九十九的汗水來的重要。——愛迪生

  • Bob 1.0——12歲

1964年,12歲的Bob寫下人生第一行代碼。

  • Bob 2.0——13歲

1965年,Bob與小搭檔John Marchese開始合作造電腦。Bob思考,John動手,兩個人忙活了數百個小時,搗鼓出不少看起來相當有型的東西,上面裝著繼電器、按鈕、小燈,甚至還安裝了一個電傳打字機!雖然這些電腦並不能用,但是對於兩個13歲的小朋友來說,這已經相當了不起了!

世界級編程大師Robert C. Martin:代碼質量與其整潔度成正比

電動打字機

  • Bob 3.0——16歲

1968年,Bob 在中學結識了新的小夥伴 Tim Conrad,開始了新一輪的造電腦工程

這次由 Tim 思考,Bob 動手,Tim 還教給了 Bob 一些電子學知識,他也是第一個給 Bob 介紹 PDP-8 的人。他們用了一些很基礎的元器件,真的造出了一臺可以工作的18位二進制計算器,能夠進行加減乘除的運算。他們興奮極了——那一年他們把所有的假期都搭進去了。

後來,他們自學了計算機課程。在那個年代,這可是一件相當不容易的事情。他們特別找來了有關PDP-8彙編器、FORTRAN、COBOL、PL/1的書籍,然後就像海綿一樣在書中汲取知識,孜孜不倦地寫了一堆程序,遺憾的是,這些程序並不能去實際執行,因為那時沒有計算機可以提供實操。

世界級編程大師Robert C. Martin:代碼質量與其整潔度成正比

PDP-8彙編器

  • Bob 4.0——17歲

1969年,Bob、Tim 以及他們的夥伴 Richard Lloyd 成為了 ASC 公司的程序員,為芝加哥卡車司機工會開發實時會計系統。

17歲的他們覺得上大學是浪費時間,於是進入職場,在那裡他們遇到了Bill Hohri、Frank Ryder、Big Carlin 和 John Miller,他們為這些年輕人提供了學習專業編程的實戰機會,Bob在其中頗受教益。

不過,這份工作經歷也讓Bob意識到,作為一個程序員還應該具備某些素養,例如對著你的上司說“YES”和“NO”。

世界級編程大師Robert C. Martin:代碼質量與其整潔度成正比

Bob在ASC工作時,他的上司 Frank 是一位退役的空軍上校,這位領導的處事風格雷厲風行:我發出指令,你們按時上線。初入職場的一眾小年輕,包括Bob,甚至不敢看他的眼睛,更不敢抗議時間不夠,以致於最終的結果是系統按時上線,故障頻發,無限次數的系統崩潰、系統重啟。

Bob認為,程序員往往太容易說“YES”,總是在沒有明確目標和期限的情況下,就第一時間草率地給出了確認的答覆,任務交付時卻無法實現自己的承諾。

有時候,獲取正確決策的唯一途徑,便是勇敢無畏地說出“不”字……我們要明白,委屈專業原則以求全, 並不是問題的解決之道。捨棄這些原則,只會製造出更多的麻煩。
只要你願意嘗試,在工作中對著那些不合理的工作任務,主動說幾次“NO”,之後你會逐漸發現:你只需要花三分的力氣去拒絕那些無法完成的工作任務,就可以節省出十分甚至二十分開發的時間;相反,如果在沒有明確目標和期限的情況下,就草率地給出了確認的答覆,往往會非常被動,到最後,項目就會落得像著名的 IBM OS/360 操作系統一樣的失敗下場。

Bob在其經典書籍《代碼整潔之道》中也提到,作為一個程序員不僅要懂得“NO”背後所蘊含的意義和責任,“YES”背後的意義和責任同樣重要。

說“YES”時,你是對自己將會做某件事做了清晰的事實陳述,而且還明確說明了完成期限。你陳述的是自己會去執行的一項行動,而且,你確定“會”做到。
但“YES”背後常常跟著的是屢見不鮮的項目延期,絕大部分原因就是在這種不負責任的情況下說 “YES”導致的。

在Bob的學生時代和職業生涯中,直接導師並不多,Bob是依靠在工作項目中的摸索以及讀一些傑出人物的著作來汲取知識、積累經驗的。這些人包括:

  • Grady Booch(《UML用戶指南》作者)
  • Tom DeMarco(《項目百態》作者)
  • Meilir Page-Jones(《UML 面向對象設計基礎》作者)
  • Erich Gamma(《設計模式》作者)
  • Martin Fowler(《重構》作者)
  • Bertrand Meyer(《面向對象軟件構造》作者)
  • Kent Beck(《測試驅動開發》作者),等等

Bob感覺這些教導都是充滿價值的。

隨後Bob在Teradyne工作,他從老闆、工作夥伴們的身上學到了許多他認為有價值的東西,特別是Mike Carew,他們成為了黃金搭檔,“如果你想活兒幹得又快又好,就把他交給Bob和Mike!“

糟糕的代碼能讓一個公司關門大吉!

在一個項目中,某位同事花三個星期寫完一串代碼後離職了,在沒有批註、沒有規律的情況下,果然沒有人能夠理解這串代碼,最終只能由新的同事重新撰寫。這段經歷引起Bob對代碼整潔的重視。

  • Bob 5.0——35歲

1987年,Bob開始和 Jim Newkirk 搭檔,隨後他們相繼離開 Teradyne,加入了 Clear Communication。

與此同時,Bob見識了一個公司的興起和衰落。

有一家公司寫了一個非常流行的殺手應用,許多專業人士都買來用,包括Bob。然而慢慢地,應用的發佈週期開始拉長,缺陷總是不能修復,裝載時間越來越久,崩潰的頻率也越來越大。至今Bob還記得自己在某天沮喪地關掉那個程序,從此再不用它時的絕望心情。果不其然,在那之後不久,該公司就關門大吉了。

後來,Bob見到那家公司的一位早期僱員,問他發生了什麼事,他的回答令Bob愈發恐懼。

原來,當時他們著急推出產品,代碼寫得亂七八糟,特性越加越多,代碼也越來越爛,最後再也沒法管理這些代碼了,只好放著不管,最終,糟糕的代碼毀了這家公司。

這個事情更是讓Bob確定了代碼的整潔是需要引起重視的,但是當時的他並沒有能力來改變這一切。

世界級編程大師Robert C. Martin:代碼質量與其整潔度成正比

Robert C. Martin

99%的程序員都在為糟糕代碼頭痛!

  • Bob 6.0——《代碼整潔之道》

Bob 和 Jim 一起在 Clear Communication 拼搏了好幾年後,共同創辦了Object Mentor公司。

想到那個困擾了他許久的難題,也是大部分程序員都遭遇過的難題——糟糕的代碼,他本能的想解決這個問題,給別人帶來幫助。於是,他開始寫作。

他在《代碼整潔之道》一書中分享了自己多年編程生涯積累的項目實踐經驗,將代碼整潔的多種解決辦法傾囊相授,受到了廣大程序員的喜愛及追捧。

Bob在《敏捷軟件開發》的序中寫道:

最好的軟件開發人員都知道一個秘密:美的東西比醜的東西創建起來更廉價,也更快捷。


而構建、維護一個美的軟件系統所花費的時間、金錢都要少於醜的系統。
美的系統是靈活、易於理解的,構建、維護它們就是一種快樂。

如果說在《敏捷軟件開發》中,更多的是對設計思想和模式精髓的闡述,那麼在《代碼整潔之道》中,Bob 為程序員們提供了更為詳盡的微距視角,涉及“命名”、“函數”、“代碼格式”、 “異常處理”、“單元測試”等編碼主題,鉅細無遺地向軟件工匠們傳授整潔編碼的藝術,進一步向軟件開發社區慷慨分享他在探索“軟件之美”旅途中的心得體會。

Bob在書中提出一種觀點:

代碼質量與其整潔度成正比。乾淨的代碼,既在質量上較為可靠,也為後期維護和升級奠定了良好基礎。

他認為,無論是敏捷開發流派還是傳統開發流派,想要保證軟件質量,不僅僅依賴架構及項目管理,更與代碼質量緊密相關。

世界級軟件開發大師的多重身份

  • Bob 7.0——成就

如今,Bob除了寫作,還會為 http://cleancoders.com 製作視頻,也會在技術會議上講話,從世界級軟件開發大師到暢銷專業書籍作家再到臺前傳達專業領域知識的權威人物,Bob給我們帶來一次次驚喜。

在這個過程中,他發現自己不止在編程方面頗有心得,對於站在人前傳達信息這件事也頗有天賦。

世界級編程大師Robert C. Martin:代碼質量與其整潔度成正比

Robert C. Martin

從一位職業的程序員變身成為這個領域的導師,這是一個緩慢的成長過程,並非一蹴而就。

Bob說:“我花了整整20年來積累工作經驗,又花了20年才做到今天的成就。‘變身’從來都不是我意料之中的事,也不是我的目的;但這個過程對我來說是一種享受”。

文章來源:異步社區、圖靈社區,有刪改


相關閱讀:

《代碼整潔之道》

世界級編程大師Robert C. Martin:代碼質量與其整潔度成正比

[美] Robert C. Martin 著 韓磊 譯

作為編程領域的佼佼者,Bob大叔給出了一系列行之有效的整潔代碼操作實踐。

這些實踐在本書中體現為一條條規則(或稱“啟示”),並輔以來自現實項目的正、反兩面的範例。只要遵循這些規則,就能編寫出乾淨的代碼,從而有效提升代碼質量。

《代碼整潔之道 程序員的職業素養》

世界級編程大師Robert C. Martin:代碼質量與其整潔度成正比

[美] Robert C. Martin 著 餘晟 章顯洲 譯

本書是編程大師“Bob 大叔”40 餘年編程生涯的心得體會的總結,《代碼整潔之道》姊妹篇,講解要成為真正專業的程序員需要具備什麼樣的態度,需要遵循什麼樣的原則,需要採取什麼樣的行動。

作者以自己以及身邊的同事走過的彎路、犯過的錯誤為例,意在為後來者引路,助其職業生涯邁上更高臺階。

《重構:改善既有代碼的設計(第2版)》

世界級編程大師Robert C. Martin:代碼質量與其整潔度成正比

[美] Martin Fowler 著 熊節 林從羽 譯

本書清晰揭示了重構的過程,解釋了重構的原理和最佳實踐方式,並給出了何時以及何地應該開始挖掘代碼以求改善。

書中給出了60多個可行的重構,每個重構都介紹了一種經過驗證的代碼變換手法的動機和技術。本書提出的重構準則將幫助你一次一小步地修改你的代碼,從而減少了開發過程中的風險。


分享到:


相關文章: