“醉袖迎風(fēng)受落花”,好代碼的10條認(rèn)知

每個軟件工程師都希望看到好代碼铆惑,從好代碼中學(xué)習(xí)范嘱,并進(jìn)一步寫出好代碼。然而员魏,“橫看成嶺側(cè)成峰”丑蛤,每個人對好代碼的理解可能不盡相同,好代碼是每個人心中那個不同的哈姆雷特嗎撕阎?

從不同的角度看好代碼受裹,雖然不夠完善,或者有失偏頗虏束,但可以為討論“好代碼”提供一些切入的維度棉饶。

1. 莫將畫竹論難易——大道至簡

最重要的可能是——代碼必須簡單。對于少數(shù)人來說魄眉,復(fù)雜的代碼很好思考砰盐,但是簡單的代碼很容易被所有人理解。如果喜歡保密的話坑律,那么應(yīng)該去從事魔術(shù)表演岩梳,而不是編程寫代碼的工作。

KISS 原則體現(xiàn)了簡單就是美晃择,據(jù)說有多個版本:

Keep It Simple and Stupid冀值;

Keep It Sweet and Simple;

Keep It Short and Simple宫屠;

Keep it Simple, Sweetheart列疗;

Keep it Simple, Sherlock。

代碼的設(shè)計越簡單越好浪蹂,任何沒有必要的復(fù)雜都是需要避免的抵栈。

2. 竹竿頭上愿絲多——少即是多

一般地,更多的代碼往往意味著它更復(fù)雜坤次,往往需要更多的時間來理解古劲,維護十行代碼的成本往往不是維護一行代碼成本的10倍。尋找機會缰猴,將軟件分解為更少的代碼模塊产艾,以鼓勵代碼的重用。

Less is More, 簡單的東西往往帶給人們的是更多的享受,好的代碼也是如此闷堡。

3. 共看明月皆如此——可讀性強

好的代碼應(yīng)該是所有讀者都能理解的隘膘,不僅僅是為了執(zhí)行而編寫的。每一行都應(yīng)該是出于實際的原因而寫的杠览,但是在實踐中弯菊,代碼會被其他人閱讀,所以它必須是可讀的踱阿。它應(yīng)該是有意義的误续;命名約定、縮進(jìn)扫茅、分號等都應(yīng)該是提高可讀性的合理語法的一部分。閱讀代碼育瓜,就像閱讀優(yōu)美的文章一樣流暢葫隙。

4.云解有情花解語——自我解釋

盡管注釋和外部文檔非常有用,但它們不是編寫良好的自我解釋代碼的替代品躏仇。好的代碼本身就是最好的說明文檔恋脚,無需解釋就能讓別人明白,每一行代碼都應(yīng)該是這樣焰手。

但是糟描,代碼自解釋不是不寫注釋的理由,即使變量书妻、方法船响、類、函數(shù)躲履、模塊的名稱是自解釋的见间,但這些并不能描述出代碼的全貌。

5. 清池不測通滄汗げ拢——可測性好

只要編寫了代碼米诉,就可以測試代碼。每次執(zhí)行代碼并檢查其效果時篷帅,都在測試它史侣,但這不應(yīng)該是測試代碼的唯一方法。單元測試是好代碼的一部分魏身,單元測試常常記錄了代碼的意圖惊橱。單元測試用例能成功運行的前提是該方法內(nèi)部的所有邏輯必須是能正常運行的,編寫可測試的代碼使其具有了可塑性叠骑。

6.伐竹為橋結(jié)構(gòu)同——可被重構(gòu)

重構(gòu)是在不改變行為的情況下改變實現(xiàn)李皇。如果沒有測試來證明行為沒有改變,就不能真正重構(gòu)。如果有一個公共接口掉房,那么對代碼進(jìn)行更改茧跋,以使公共接口更改,這不是重構(gòu)卓囚,而是重寫瘾杭。

真正可以重構(gòu)的代碼是可以用更少的努力改進(jìn)的代碼,不費吹灰之力就能改進(jìn)的代碼是好代碼哪亿,價值體現(xiàn)主要在于可維護性和可擴展性粥烁。

7. 因君為問平安否——安全可靠

采用良好的編程風(fēng)格,可以防范大多數(shù)編碼錯誤蝇棉。用懷疑的眼光審視所有的輸入和所有的結(jié)果讨阻,采用防御式編程,直到可以能證明它們正確時為止篡殷。如果無法使用安全的數(shù)據(jù)結(jié)構(gòu)钝吮,就要對不安全的數(shù)據(jù)類型系統(tǒng)地使用安全操作。重視所有稀有的資源板辽,審慎地管理它們的獲取和釋放奇瘦。

安全可靠是永恒的主題,可靠劲弦、可預(yù)測和平實的代碼才可能是安全的耳标,重視安全從每一行代碼做起。

8. 專一始終無變異——職責(zé)單一

好的代碼“塊”有一個單一的責(zé)任邑跪,應(yīng)該做一件事次坡,并做好它,具有功能的明確性画畅。符合單一職責(zé)原則的代碼會由更多的小規(guī)模但目標(biāo)更明確的代碼組成贸毕,然后通過接口抽象以及在運行時將無關(guān)功能的責(zé)任委托給相應(yīng)的接口來達(dá)成目標(biāo),目的就是提高代碼的可維護性夜赵、可讀性明棍、擴展性。

9. 有似山開萬里云——公開分享

編程就是一項運動寇僧,通過不斷地練習(xí)摊腋,不斷地向他人學(xué)習(xí),才能不斷地提高代碼的質(zhì)量嘁傀。改進(jìn)代碼的好方法之一是共享代碼并通過共享接受更改兴蒸,也是另一種程度上的復(fù)用。代碼開源或許是走向好代碼的路徑之一细办,可惜老碼農(nóng)從社區(qū)獲得很多橙凳,貢獻(xiàn)很少蕾殴,慚愧之至。

10.萬態(tài)千端一瞬中——只有更好

總有更好的程序員寫出更好的代碼岛啸,總會有更好的解決方案钓觉,可以通過共享和重構(gòu)來改進(jìn)代碼。如果好代碼可以改進(jìn)坚踩,就應(yīng)該改進(jìn)荡灾,因此是暫時的。好代碼可能不是一次性的瞬铸,要為未來寫代碼批幌,沒有最好,只有更好嗓节。

關(guān)聯(lián)閱讀:

紙上得來終覺淺——成長的10條...

Bug與Debug的隨筆

無我編程的10條誡律

關(guān)于軟件開發(fā)荧缘,都應(yīng)該知道的10個常識

軟件架構(gòu)的10個常見模式

如何進(jìn)入一個新領(lǐng)域

PHP 是最好的語言嗎?

一個函數(shù)的自白

6行python代碼的愛心曲線

10行Python代碼的詞云

一行Python代碼

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拦宣,一起剝皮案震驚了整個濱河市胜宇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恢着,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件财破,死亡現(xiàn)場離奇詭異掰派,居然都是意外死亡,警方通過查閱死者的電腦和手機左痢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門靡羡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人俊性,你說我怎么就攤上這事略步。” “怎么了定页?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵趟薄,是天一觀的道長。 經(jīng)常有香客問我典徊,道長杭煎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任卒落,我火速辦了婚禮羡铲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘儡毕。我一直安慰自己也切,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著雷恃,像睡著了一般疆股。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上褂萧,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天押桃,我揣著相機與錄音,去河邊找鬼导犹。 笑死唱凯,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谎痢。 我是一名探鬼主播磕昼,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼节猿!你這毒婦竟也來了票从?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤滨嘱,失蹤者是張志新(化名)和其女友劉穎峰鄙,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體太雨,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡吟榴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了囊扳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吩翻。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖锥咸,靈堂內(nèi)的尸體忽然破棺而出狭瞎,到底是詐尸還是另有隱情,我是刑警寧澤搏予,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布熊锭,位于F島的核電站,受9級特大地震影響雪侥,放射性物質(zhì)發(fā)生泄漏球涛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一校镐、第九天 我趴在偏房一處隱蔽的房頂上張望亿扁。 院中可真熱鬧,春花似錦鸟廓、人聲如沸从祝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牍陌。三九已至擎浴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間毒涧,已是汗流浹背贮预。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留契讲,地道東北人仿吞。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像捡偏,于是被迫代替她去往敵國和親唤冈。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 寫在前面的話:這周末我一個同學(xué)在群上說找到一篇挺有意思的文章(就是下面要說的可讀性代碼的心理學(xué))银伟,說要翻譯出來你虹,我...
    Eric_昵稱已被使用閱讀 679評論 0 1
  • 與大北農(nóng)集團的緣分源自成都之行傅物,那次我們十幾個人被派去成都參加《六項精進(jìn)》研討會,在空巴晚宴的分享環(huán)節(jié)琉预,所有參加這...
    孟雯雯閱讀 1,244評論 0 2
  • 連好得都穿一條褲子的廣勇都能騙你担汤,真叫人笑話类溢! 小滿嘲笑清輝详幽。 2005年以后简肴,工地上交工的樓房逐漸成了毛坯房贮缅,不...
    簡書作者木瓜閱讀 406評論 2 4
  • 2019年初的時候榨咐,我只定了兩個目標(biāo),但是一個都沒完成谴供。 第一個目標(biāo)是5次文章投稿發(fā)表块茁。 寫完這個目標(biāo)后,我感覺自...
    三和的秘密基地閱讀 100評論 0 0
  • 矮個子點了點頭:“你們二位就不用我們動手了吧桂肌?”他轉(zhuǎn)過頭對著兩個練家子說道:“把這個人綁好了数焊,讓他們兩個摻著∑槌。” ...
    久寶APP閱讀 281評論 0 0