廣州恒拓開源

7x24小時咨詢熱線

400-660-3310

當(dāng)前位置 : 好學(xué)校 廣州恒拓開源 學(xué)習(xí)資訊 資訊詳情

代碼清潔很重要嗎?看看這七大理由!

2014-03-26

首先要承認(rèn),大學(xué)畢業(yè)的時候我是個糟糕的程序員。 我拿到了學(xué)位,學(xué)到了一大堆書本知識,然后,我開始做一個不太重要的項(xiàng)目,每天晚上花大量的時間做簡化。 起初,一切正常,但是我的代碼風(fēng)格一直在添亂。復(fù)制、粘貼、蹩腳的命名,混亂的思考,而且總用長期連續(xù)運(yùn)行的方法,執(zhí)行各種各樣本可以分開的任務(wù)。幾個月 之后,我意識到一個嚴(yán)峻的現(xiàn)實(shí):這個項(xiàng)目要崩潰了。原本我以為一個人開發(fā),可以避免混亂。但是終不得不承認(rèn),這個項(xiàng)目被我弄得一團(tuán)糟,沒法維護(hù),更別說 去理解了。

盡管我的代碼通常能正常運(yùn)行,但我確實(shí)在編碼時玩忽職守,因?yàn)槲覍懙拇a,不經(jīng)過仔細(xì)重構(gòu),沒人能看懂。那時,我是個超高效的技術(shù)債務(wù)制造者。 你一定不想那樣。

再簡單的問題,一個糟糕的程序員都能把它變復(fù)雜?!猄teve Bohlen

哇,Steve是在說我吧?我早期的項(xiàng)目就很好驗(yàn)證了這句話。沒有良好的實(shí)現(xiàn),再簡單的邏輯都能變得晦澀難懂。早期的經(jīng)驗(yàn)讓我明白,我該研究下怎么改進(jìn)代碼風(fēng)格了。

什么是整潔的代碼?

代碼整潔是一種以讀者為中心的開發(fā)風(fēng)格,以此開發(fā)的軟件易于讀寫和維護(hù)。開發(fā)人員總以為他們的工作在應(yīng)用程序能夠正常運(yùn)行時就完成了。但是我們編寫代碼,并不只是為了給計算機(jī)用。

編碼是一種和另外一個人交流你希望計算機(jī)做什么的藝術(shù)。–Nonald Knuth

保持代碼整潔,首先要意識到你的讀者不只是計算機(jī),還是活生生的人!牢記這個原則,我們來討論代碼整潔之所以重要的七個簡單理由。

1. 你是個作家

想讓媽媽覺得你很厲害?告訴她你是個作家!作家就是那些練習(xí)寫作并以此為職業(yè)的人。開發(fā)人員每天都在寫。但是作為開發(fā)人員,我們總會忘記我們寫的每一行代碼都會被人閱讀十遍以上。這些人,就是我們的同事。他們閱讀代碼,忙著修復(fù)漏洞和添加新的特性。

卓越的作家以寫敘述清晰、扣人心弦的故事著稱于世。他們使用諸如章節(jié)、標(biāo)題和段落等工具,有條理組織他們的想法,并耐心的引導(dǎo)讀者。開發(fā)人員的工作模式也很類似,只是他們簡單的使用命名空間、類和方法這些行話來講述故事罷了。

代碼整潔的人能夠聰明使用這些工具來降低復(fù)雜度,使故事變得清晰。

2. 代碼整潔是基礎(chǔ)

近年來,專業(yè)的重構(gòu)、單元測試、測試驅(qū)動的開發(fā)等軟件實(shí)踐備受關(guān)注。這些實(shí)踐提升了代碼質(zhì)量和軟件的可維護(hù)性。實(shí)現(xiàn)代碼整潔的原則是一項(xiàng)基本技能, 它的優(yōu)勢會在進(jìn)行重構(gòu)代碼或者對代碼進(jìn)行單元測試時顯現(xiàn)。代碼整潔的原則使得源代碼高度模塊化并且易于閱讀和測試。如果將那些軟件實(shí)踐看作是房子的話,整 潔的代碼則是地基。

3. 證明你的技能

假設(shè)你正在參加一場技術(shù)面試。如果被問到代碼質(zhì)量,為證明你的代碼質(zhì)量,你能夠舉出專業(yè)且合理的理由嗎?

或者,你會這樣回答?

如果這就是你關(guān)于代碼整潔所能想到的,那可是個壞兆頭。如果你從未有條有理的深入思考過代碼風(fēng)格的質(zhì)量問題,那么你可以改進(jìn)的機(jī)會估計很多。代碼整 潔的人能夠傳授很多他們使用的具體行為、模式和技巧。但是,代碼整潔畢竟不是偶然現(xiàn)象,它要求可行的規(guī)律的專注于清晰的表達(dá)意圖。

能夠被衡量的東西,都能被管理?!?Peter Drucker

建立一個整潔代碼的詞匯表,不僅有利于面試和提升代碼質(zhì)量;而且,在代碼審查時,建立大家公認(rèn)的代碼可讀性的詞匯表和框架,能夠促進(jìn)冷靜的對話。

4. 讀代碼才是難事

開發(fā)人員常以能夠解決難題為傲。不過相對來講,寫代碼比較簡單,讀代碼才是件難事。這就是為什么 Eric Lippert 寫文章說閱讀代碼很難。 這也是為什么這么多的程序員寧愿重寫,也不愿做閱讀和理解已有的代碼這種苦差事。既然看代碼原本就很挑戰(zhàn),如果一些代碼你寫的時候都只能勉強(qiáng)理解,你會發(fā) 現(xiàn)過后你一點(diǎn)都看不懂。專業(yè)的程序員寫了太多的代碼,以至于只要間隔幾周,就能忘記大部分的結(jié)構(gòu)和設(shè)計,像以全新的視角看這個項(xiàng)目。過段時間看不懂自己的代碼確實(shí)是很尷尬的事。相信我,我經(jīng)歷過好幾次。

5. 技術(shù)債務(wù)讓人沮喪

馬虎混亂的代碼會給我們的項(xiàng)目埋下技術(shù)債務(wù)。仔細(xì)考慮情境時,技術(shù)債務(wù)也會是有用的,但是過度的技術(shù)債讓人沮喪,并且會導(dǎo)致團(tuán)隊(duì)的人才流失。當(dāng)簡單 的事情變得復(fù)雜時,開發(fā)人員就會開始撤退去別的地方了。他們更看重工作質(zhì)量帶來的成就感,而不是工作數(shù)量。技術(shù)債務(wù)會降低代碼重用的機(jī)會,并且處處拉低其 他代碼庫的質(zhì)量。

6. 你太懶惰

PERL語言的作者Larry Wall說過程序員的三大美德:懶、缺乏耐心、自大。是的,在合適的情境中,懶惰確實(shí)是積極因素。早些年,當(dāng)我還在跌跌撞撞的寫代碼的時候,我認(rèn)識到保持代碼整潔所付出的艱辛真的會得到回報。專業(yè)的開發(fā)人員努力做到正確的懶惰。這種懶惰是把更多的精力放到代碼中,以至于開始時不難寫,以后也不會難以重用。 代碼整潔不會多花費(fèi)很多時間,而且一旦你掌握這些原則,你的編碼速度實(shí)際上會更快。因?yàn)榫珶挼?、表達(dá)充分的代碼大的優(yōu)點(diǎn)就是易于管理。

人們處于壓力中時,容易偷工減料并且忽略佳做法。然而像Bob Martin大叔在他的《代碼整潔之道》中提醒我們的那樣:我們沒有時間不認(rèn)真。長遠(yuǎn)來看,馬虎草率所增加的出錯次數(shù)和后期的維護(hù)代價,終會拖延項(xiàng)目速度。歷史經(jīng)驗(yàn)告訴我們,后期你基本不可能有時間再去整理你的代碼。所以為什么不在一開始就好好做呢?

7. 不要成為那個動詞

好吧,其他的原因都解釋的站得住腳,但是這個理由關(guān)鍵。大家都知道前同事的名字變成動詞來描述“臟”代碼的事:糟糕,這些代碼是Jimmy寫的?!癘h man, this code has been Jimmy’d.”

這樣的評價,簡直就是長遠(yuǎn)就業(yè)前景的克星啊。我們都希望未來的職位上,同事能夠推薦或者錄用我們不是嗎?想要確保今后同事會推薦你,并且期待和你以及你的代碼合作,讓別人知道你的代碼整潔是好的方式。

代碼整潔的原則

以下是代碼整潔的三個核心原則:

1. 選擇正確的工具

2. 優(yōu)化信噪比

3. 盡大努力寫出能夠自解釋的代碼

Cory在PluralSight的新課程代碼整潔之道:寫代碼給人看詳細(xì)的闡述了這三個原則。如果你有興趣提升代碼質(zhì)量,建立評價和編寫整潔代碼的詞匯庫,去看看吧!

關(guān)于作者

Cory House,軟件架構(gòu)師,獨(dú)立顧問,Pluralsignht作者,INETA社區(qū)英國發(fā)展會議正式發(fā)言人。精通響應(yīng)式網(wǎng)頁設(shè)計、代碼整潔之道以及臭高爾夫球技。

——摘自開源中國

收藏
分享到:

相關(guān)課程

相關(guān)資訊

廣州恒拓開源

廣州恒拓開源

認(rèn)證等級

信譽(yù)良好,可安心報讀

廣州恒拓開源

已獲好學(xué)校V2信譽(yù)等級認(rèn)證

信譽(yù)值

  • (60-80)基礎(chǔ)信譽(yù)積累,可放心報讀
  • (81-90)良好信譽(yù)積累,可持續(xù)信賴
  • (91-100)充分信譽(yù)積累,推薦報讀

與好學(xué)校簽訂讀書保障協(xié)議:

  • 100%
  • 1
  • 2546
在線咨詢
;