《代碼整潔之道 clean code》讀書(shū)筆記

博客原文

《代碼整潔之道 clean code》這本書(shū)已經(jīng)關(guān)注很久,最近極其有欲望讀一下她袱蚓。主要是因?yàn)閭€(gè)人正兒八經(jīng)寫(xiě)代碼也有三年左右了,自己總結(jié)了一些代碼規(guī)范和關(guān)于代碼質(zhì)量的理解犯建,但是不能很好的說(shuō)服團(tuán)隊(duì)嚴(yán)格遵守诸狭,于是乎想尋求正統(tǒng)的代碼整潔之道,以提高代碼質(zhì)量辟躏。寫(xiě)文章只是想把書(shū)讀薄谷扣,有摘抄也有感想。今天先記錄第一篇捎琐,開(kāi)始~

clean code.jpg

1 核心觀念

代碼質(zhì)量與其整潔度成正比会涎,個(gè)人非常認(rèn)同,在工作中也有很痛的領(lǐng)悟瑞凑。在本書(shū)的序中提到末秃,軟件開(kāi)發(fā)工作中有百分之八十的時(shí)間是在對(duì)項(xiàng)目進(jìn)行維護(hù)(修修補(bǔ)補(bǔ)),也就是說(shuō)你寫(xiě)過(guò)的代碼籽御,會(huì)被反復(fù)的查看和修改(你自己或者他人)练慕。因此代碼的可讀性和易修改性(不能牽一發(fā)而動(dòng)全身)很重要。

在汽車(chē)行業(yè)有5S原則技掏,這是一套精益求精的規(guī)程:專(zhuān)注铃将、鎮(zhèn)定和思考,并非只關(guān)心實(shí)際作業(yè)哑梳,還要推動(dòng)整個(gè)項(xiàng)目的快速高效運(yùn)轉(zhuǎn)劲阎。5S哲學(xué)包括以下概念:

  • 整理(或謂組織,sort-分類(lèi)排序)鸠真,搞清楚事物之所在很重要悯仙,比如通過(guò)恰當(dāng)?shù)拿?lèi)的手段龄毡。
  • 整頓(或謂整齊,systematize-系統(tǒng)化)锡垄,物皆有其位稚虎,而后物盡歸其位(A place for everything, and everything in its place.)。每段代碼都該在你希望它所在的地方偎捎。
  • 清潔(或謂shine-锃亮)蠢终,對(duì)于那種四處遺棄的帶注釋的代碼,以及反映過(guò)往或期望的無(wú)注釋代碼茴她,應(yīng)除之而后快寻拂。
  • 標(biāo)準(zhǔn)化,一個(gè)項(xiàng)目組內(nèi)應(yīng)該使用一貫的代碼風(fēng)格和實(shí)踐手段丈牢。
  • 身美(或謂自律)祭钉,在實(shí)踐中貫徹規(guī)程,并時(shí)時(shí)體現(xiàn)于個(gè)人工作上己沛,而且要樂(lè)于改進(jìn)慌核。

接受挑戰(zhàn)吧~~

Cleanliness is next to godliness(整潔近乎虔誠(chéng))

He who is faithful in little is faithful in much(守小節(jié)者不虧大節(jié))

A stitch in time saves nine(及時(shí)一針省九針)

The early bird catches the worm(早起的鳥(niǎo)兒有蟲(chóng)吃)

Don't put off until tomorrow what you can do today(今日事今日畢)

Mighty oaks from little acorns grow(巨木生于樹(shù)籽)

An ounce of prevention is worth a pound of cure(防病好過(guò)治病)

An apple a day keeps the doctor away(一天一個(gè)蘋(píng)果申尼,醫(yī)生遠(yuǎn)離我)
以上這些警句不管在東方還是西方都一定的影響垮卓,可以深思一下。

2 寫(xiě)糟糕代碼的理由與代價(jià)

在寫(xiě)代碼的時(shí)候师幕,心里總是有兩個(gè)“我”在爭(zhēng)斗粟按,是寫(xiě)得更完美一點(diǎn)呢?還是趕緊完成它霹粥,還有很多工作等著要做呢灭将?這是每個(gè)程序員都遇到過(guò)的困境,在面對(duì)這個(gè)困擾的時(shí)候后控,你做出了什么樣的選擇庙曙?你自己心里清楚,捫心自問(wèn)一下浩淘,舒服嗎捌朴?

當(dāng)我 review 別人的代碼時(shí),我也問(wèn)過(guò)他們馋袜,他們也承認(rèn)自己寫(xiě)的時(shí)糟糕的代碼男旗,卻總是說(shuō)項(xiàng)目時(shí)間緊,趕時(shí)間欣鳖,等有時(shí)間了再整理一下察皇。這么回答就是沒(méi)有認(rèn)識(shí)到糟糕代碼的危害力有多大,你現(xiàn)在節(jié)省的時(shí)間,會(huì)在你修改測(cè)試bug(甚至生產(chǎn)bug)的時(shí)候付出雙倍的時(shí)間什荣。

還有就是你的代碼一旦測(cè)試通過(guò)矾缓,就很少再動(dòng)你的那些代碼,即使你有時(shí)間稻爬,即使你想整理代碼嗜闻,也不敢,怕出新的bug桅锄。

或許有一天你回頭看看曾經(jīng)寫(xiě)過(guò)的代碼琉雳,自己都嫌棄。老板說(shuō)在上面添加一個(gè)新功能友瘤,你來(lái)做吧翠肘,偷偷瞟一眼自己親手造成的混亂,決定棄之不顧辫秧,努力去說(shuō)服老板束倍,咱們重新來(lái)過(guò)吧。你覺(jué)著老板心里會(huì)怎么想盟戏,這耗費(fèi)的時(shí)間完全不是添加一個(gè)功能的時(shí)間绪妹,這得付出多大的代價(jià)。

大家必須要認(rèn)識(shí)到這么一個(gè)勒布朗(LeBlanc)法則:稍后等于永不(Later equals never)柿究。

有一定經(jīng)驗(yàn)的開(kāi)發(fā)者都知道邮旷,你頂著期限的壓力,制造了混亂的代碼笛求,然后混亂的代碼又拖住了你的后腿廊移,接著就是你錯(cuò)過(guò)了期限糕簿。趕上期限的唯一方法就是始終盡可能的保持代碼整潔探入。

或許我們理由還有更多,比如需求變化背離了初期的設(shè)計(jì)懂诗,進(jìn)度太緊張蜂嗽,沒(méi)法好好干活,心里還罵那些愚蠢的經(jīng)理殃恒、苛刻的用戶(hù)植旧、沒(méi)用的營(yíng)銷(xiāo)方式±胩疲回頭想想病附,是不是自作自受,不夠?qū)I(yè)亥鬓?

3 什么是整潔代碼

代碼作品就像藝術(shù)品一樣完沪,有不同的流派,在大師的眼里,對(duì)于優(yōu)美與漂亮有不同的理解覆积。關(guān)于什么是整潔代碼書(shū)中講述很多大師的觀點(diǎn)听皿,各個(gè)側(cè)重點(diǎn)不同,總結(jié)一下:

  1. 有意義的命名宽档,代碼應(yīng)通過(guò)其字面表達(dá)含義尉姨;
  2. 沒(méi)有重復(fù)代碼;
  3. 全面覆蓋的單元測(cè)試吗冤;
  4. 提供清晰又厉、盡量少的API;
  5. 完美的錯(cuò)誤處理代碼椎瘟,不要忽略細(xì)節(jié)馋没;
  6. 性能調(diào)至最優(yōu),省得引誘別人做沒(méi)規(guī)矩的優(yōu)化降传;
  7. 盡量少的依賴(lài)關(guān)系篷朵,便于維護(hù);
  8. 盡量少的實(shí)體婆排,比如類(lèi)声旺、方法、函數(shù)等段只;
  9. 整潔的代碼(類(lèi)/函數(shù)/模塊)只做好一件事腮猖;
  10. 整潔的代碼看起來(lái)專(zhuān)為解決那個(gè)問(wèn)題而存在;
  11. 整潔的代碼簡(jiǎn)單直接赞枕,從不隱藏設(shè)計(jì)者的意圖澈缺;
  12. 整潔的代碼看起來(lái)像是某位特別在意她的人寫(xiě)的,沒(méi)有改進(jìn)的余地炕婶;
  13. 整潔的代碼淺顯易懂姐赡,絕不故作高深;

通過(guò)一些“編輯器回放”工具統(tǒng)計(jì)發(fā)現(xiàn)柠掂,在寫(xiě)代碼的時(shí)候项滑,閱讀其他模塊代碼的時(shí)間是你寫(xiě)代碼所花費(fèi)的時(shí)間的10倍,我們一直在閱讀舊代碼涯贞。在大部分情況下枪狂,我們不讀周邊的代碼就沒(méi)法寫(xiě)代碼。編寫(xiě)代碼的難度宋渔,取決于閱讀周邊代碼的難度州疾。因此,我們?cè)诰帉?xiě)代碼的時(shí)候付出更多努力皇拣,使寫(xiě)出的代碼閱讀起來(lái)很輕松严蓖,是非常值得的。

整潔代碼如同優(yōu)美的散文,讀起來(lái)令人身心愉悅谈飒,深合己意岂座。

最后來(lái)一條美國(guó)童子軍軍規(guī),非常符合我們的專(zhuān)業(yè)領(lǐng)域:讓營(yíng)地比你來(lái)時(shí)更干凈杭措。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末费什,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子手素,更是在濱河造成了極大的恐慌鸳址,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泉懦,死亡現(xiàn)場(chǎng)離奇詭異稿黍,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)崩哩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)巡球,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人邓嘹,你說(shuō)我怎么就攤上這事酣栈。” “怎么了汹押?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵矿筝,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我棚贾,道長(zhǎng)窖维,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任妙痹,我火速辦了婚禮铸史,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘细诸。我一直安慰自己沛贪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布震贵。 她就那樣靜靜地躺著,像睡著了一般水评。 火紅的嫁衣襯著肌膚如雪猩系。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,475評(píng)論 1 312
  • 那天中燥,我揣著相機(jī)與錄音寇甸,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛拿霉,可吹牛的內(nèi)容都是我干的吟秩。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼绽淘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼涵防!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起沪铭,我...
    開(kāi)封第一講書(shū)人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤壮池,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后杀怠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體椰憋,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年赔退,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了橙依。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡硕旗,死狀恐怖票编,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卵渴,我是刑警寧澤慧域,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站浪读,受9級(jí)特大地震影響昔榴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜碘橘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一互订、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧痘拆,春花似錦仰禽、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至桥氏,卻和暖如春温峭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背字支。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工凤藏, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奸忽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓揖庄,卻偏偏與公主長(zhǎng)得像栗菜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蹄梢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

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

  • 目錄及筆記鏈接 序 丹麥諺語(yǔ):小處誠(chéng)實(shí)非小事疙筹。 建筑師路德維希:神在細(xì)節(jié)之中。 日本的 5S 哲學(xué): 整理(整理检号、...
    小鐳Ra閱讀 1,497評(píng)論 3 3
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,312評(píng)論 25 707
  • “相對(duì)于任何宏偉景愿腌歉,對(duì)細(xì)節(jié)的關(guān)注甚至是更為關(guān)鍵的專(zhuān)業(yè)性基礎(chǔ)。首先齐苛,開(kāi)發(fā)者通過(guò)小型實(shí)踐獲得可用于大型實(shí)踐的技能和信...
    尋海閱讀 4,738評(píng)論 1 27
  • 我們都曾經(jīng)瞟一眼自己親手造成的混亂翘盖,決定棄之不顧,走向新的一天凹蜂。我們都曾經(jīng)看到自己的爛程序居然能運(yùn)行馍驯,然后斷言能運(yùn)...
    小小輝_710a閱讀 449評(píng)論 0 1
  • 2016年是P2P網(wǎng)貸行業(yè)的合規(guī)元年汰瘫,也是消費(fèi)金融大爆發(fā)的一年,據(jù)統(tǒng)計(jì)擂煞,我國(guó)當(dāng)前消費(fèi)金融市場(chǎng)規(guī)模已達(dá)5萬(wàn)億元混弥,未來(lái)...
    2ee6980a78cf閱讀 357評(píng)論 0 0