程式碼整潔之所以重要的七個理由
首先要承認,大學畢業的時候我是個糟糕的程式設計師。我拿到了學位,學到了一大堆書本知識,然後,我開始做一個不太重要的專案,每天晚上花大量的時間做簡化。 起初,一切正常,但是我的程式碼風格一直在添亂。複製、貼上、蹩腳的命名,混亂的思考,而且總用長期連續執行的方法,執行各種各樣本可以分開的任務。幾個月之後,我意識到一個嚴峻的現實:這個專案要崩潰了。原本我以為一個人開發,可以避免混亂。但是最終不得不承認,這個專案被我弄得一團糟,沒法維護,更別說去理解了。
儘管我的程式碼通常能正常執行,但我確實在編碼時玩忽職守,因為我寫的程式碼,不經過仔細重構,沒人能看懂。那時,我是個超高效的技術債務製造者。 你一定不想那樣。
再簡單的問題,一個糟糕的程式設計師都能把它變複雜。——Steve Bohlen
哇,Steve是在說我吧?我早期的專案就很好驗證了這句話。沒有良好的實現,再簡單的邏輯都能變得晦澀難懂。早期的經驗讓我明白,我該研究下怎麼改進程式碼風格了。
什麼是整潔的程式碼?
程式碼整潔是一種以讀者為中心的開發風格,以此開發的軟體易於讀寫和維護。開發人員總以為他們的工作在應用程式能夠正常執行時就完成了。但是我們編寫程式碼,並不只是為了給計算機用。
編碼是一種和另外一個人交流你希望計算機做什麼的藝術。–Nonald Knuth
保持程式碼整潔,首先要意識到你的讀者不只是計算機,還是活生生的人!牢記這個原則,我們來討論程式碼整潔之所以重要的七個簡單理由。
1. 你是個作家
想讓媽媽覺得你很厲害?告訴她你是個作家!作家就是那些練習寫作並以此為職業的人。開發人員每天都在寫。但是作為開發人員,我們總會忘記我們寫的每一行程式碼都會被人閱讀十遍以上。這些人,就是我們的同事。他們閱讀程式碼,忙著修復漏洞和新增新的特性。
卓越的作家以寫敘述清晰、扣人心絃的故事著稱於世。他們使用諸如章節、標題和段落等工具,有條理組織他們的想法,並耐心的引導讀者。開發人員的工作模式也很類似,只是他們簡單的使用名稱空間、類和方法這些行話來講述故事罷了。
程式碼整潔的人能夠聰明使用這些工具來降低複雜度,使故事變得清晰。
2. 程式碼整潔是基礎
近年來,專業的重構、單元測試、測試驅動的開發等軟體實踐備受關注。這些實踐提升了程式碼質量和軟體的可維護性。實現程式碼整潔的原則是一項基本技能,它的優勢會在進行重構程式碼或者對程式碼進行單元測試時顯現。程式碼整潔的原則使得原始碼高度模組化並且易於閱讀和測試。如果將那些軟體實踐看作是房子的話,整潔的程式碼則是地基。
3. 證明你的技能
假設你正在參加一場技術面試。如果被問到程式碼質量,為證明你的程式碼質量,你能夠舉出專業且合理的理由嗎?
或者,你會這樣回答?
如果這就是你關於程式碼整潔所能想到的,那可是個壞兆頭。如果你從未有條有理的深入思考過程式碼風格的質量問題,那麼你可以改進的機會估計很多。程式碼整潔的人能夠傳授很多他們使用的具體行為、模式和技巧。但是,程式碼整潔畢竟不是偶然現象,它要求可行的規律的專注於清晰的表達意圖。
能夠被衡量的東西,都能被管理。—— Peter Drucker
建立一個整潔程式碼的詞彙表,不僅有利於面試和提升程式碼質量;而且,在程式碼審查時,建立大家公認的程式碼可讀性的詞彙表和框架,能夠促進冷靜的對話。
4. 讀程式碼才是難事
開發人員常以能夠解決難題為傲。不過相對來講,寫程式碼比較簡單,讀程式碼才是件難事。這就是為什麼 Eric Lippert 寫文章說閱讀程式碼很難。這也是為什麼這麼多的程式設計師寧願重寫,也不願做閱讀和理解已有的程式碼這種苦差事。既然看程式碼原本就很挑戰,如果一些程式碼你寫的時候都只能勉強理解,你會發現過後你一點都看不懂。專業的程式設計師寫了太多的程式碼,以至於只要間隔幾周,就能忘記大部分的結構和設計,像以全新的視角看這個專案。過段時間看不懂自己的程式碼確實是很尷尬的事。相信我,我經歷過好幾次。
5. 技術債務讓人沮喪
馬虎混亂的程式碼會給我們的專案埋下技術債務。仔細考慮情境時,技術債務也會是有用的,但是過度的技術債讓人沮喪,並且會導致團隊的人才流失。當簡單的事情變得複雜時,開發人員就會開始撤退去別的地方了。他們更看重工作質量帶來的成就感,而不是工作數量。技術債務會降低程式碼重用的機會,並且處處拉低其他程式碼庫的質量。
6. 你太懶惰
PERL語言的作者Larry Wall說過程式設計師的三大美德:懶、缺乏耐心、自大。是的,在合適的情境中,懶惰確實是積極因素。早些年,當我還在跌跌撞撞的寫程式碼的時候,我認識到保持程式碼整潔所付出的艱辛真的會得到回報。專業的開發人員努力做到正確的懶惰。這種懶惰是把更多的精力放到程式碼中,以至於開始時不難寫,以後也不會難以重用。程式碼整潔不會多花費很多時間,而且一旦你掌握這些原則,你的編碼速度實際上會更快。因為精煉的、表達充分的程式碼最大的優點就是易於管理。
人們處於壓力中時,容易偷工減料並且忽略最佳做法。然而像Bob Martin大叔在他的《程式碼整潔之道》中提醒我們的那樣:我們沒有時間不認真。長遠來看,馬虎草率所增加的出錯次數和後期的維護代價,最終會拖延專案速度。歷史經驗告訴我們,後期你基本不可能有時間再去整理你的程式碼。所以為什麼不在一開始就好好做呢?
7. 不要成為那個動詞
好吧,其他的原因都解釋的站得住腳,但是這個理由最關鍵。大家都知道前同事的名字變成動詞來描述“髒”程式碼的事:糟糕,這些程式碼是Jimmy寫的。“Oh man, this code has been Jimmy’d.”
這樣的評價,簡直就是長遠就業前景的剋星啊。我們都希望未來的職位上,同事能夠推薦或者錄用我們不是嗎?想要確保今後同事會推薦你,並且期待和你以及你的程式碼合作,讓別人知道你的程式碼整潔是最好的方式。
程式碼整潔的原則
以下是程式碼整潔的三個核心原則:
1. 選擇正確的工具
2. 優化訊雜比
3. 盡最大努力寫出能夠自解釋的程式碼
Cory在PluralSight的新課程程式碼整潔之道:寫程式碼給人看詳細的闡述了這三個原則。如果你有興趣提升程式碼質量,建立評價和編寫整潔程式碼的詞彙庫,去看看吧!
關於作者
Cory House,軟體架構師,獨立顧問,Pluralsignht作者,INETA社群英國發展會議正式發言人。精通響應式網頁設計、程式碼整潔之道以及臭高爾夫球技。
原文連結: Micheal Shallop 翻譯: 伯樂線上 - Victoria
相關文章
- 整潔程式碼的4個提示
- 程式碼整潔之道的 7 個方法
- 程式碼整潔之道
- 整潔的 Table View 程式碼View
- 整潔的程式碼VS卓越的程式碼
- 11個讓你程式碼整潔的原則
- JavaScript 程式碼整潔之道JavaScript
- Typescript 程式碼整潔之道TypeScript
- 聊聊程式碼整潔之道
- (譯)保持你的程式碼整潔
- 如何寫出整潔的程式碼
- 程式碼整潔 vs 程式碼骯髒
- 程式碼整潔之道 clean code
- 重構 - 程式碼整潔之道
- Web前端:11個讓你程式碼整潔的原則Web前端
- 程式碼整潔之道 – 有意義的命名
- 如何讓你的程式碼整潔漂亮
- 6個小技巧教你編寫乾淨整潔的程式碼
- 程式碼整潔之道讀書記
- React 整潔程式碼最佳實踐React
- 什麼是整潔的程式碼(Clean Code)?
- 優秀程式設計師眼中的整潔程式碼程式設計師
- 五個簡單的原則,帶你寫出整潔程式碼
- 6 個可以讓程式碼變得更整潔的 Android 庫Android
- 閱讀《程式碼整潔之道》總結
- 程式碼整潔之道之做減法
- 程式碼整潔之道Clean Code筆記筆記
- 重新使用Java的七個理由Java
- 使用 AppFuse 的七個理由APP
- 《程式碼整潔之道》總結和筆記筆記
- 讀書筆記-程式碼整潔之道(一)筆記
- 程式碼整潔之道--讀書筆記(14)筆記
- 程式碼整潔之道--讀書筆記(1)筆記
- 程式碼整潔之道--讀書筆記(2)筆記
- 程式碼整潔之道--讀書筆記(3)筆記
- 程式碼整潔之道--讀書筆記(4)筆記
- 程式碼整潔之道--讀書筆記(5)筆記
- 程式碼整潔之道--讀書筆記(6)筆記