- 故鄉讀后感 推薦度:
- 《背影》讀后感 推薦度:
- 《邊城》讀后感 推薦度:
- 《匆匆》讀后感 推薦度:
- 《匆匆》讀后感 推薦度:
- 相關(guān)推薦
《Clean Code》讀后感
品味完一本名著(zhù)后,大家心中一定有不少感悟,為此需要認真地寫(xiě)一寫(xiě)讀后感了。是不是無(wú)從下筆、沒(méi)有頭緒?以下是小編整理的《Clean Code》讀后感,希望對大家有所幫助。
最近淺讀了《Clean Code》這本書(shū),雖然由于知識水平的有限,很多地方?jīng)]有理解透徹,但還是令我受益頗多。
毫無(wú)置疑,軟件質(zhì)量,不但依賴(lài)于架構及項目管理,而且與代碼質(zhì)量緊密相關(guān)。這本書(shū)圍繞“代碼質(zhì)量與其整潔度成正比”給出了一系列論述以及行之有效的整潔代碼操作實(shí)踐,“干凈的代碼,既在質(zhì)量上較為可靠,也為后期維護、升級奠定了良好的基礎”。
第一章論述了“整潔代碼”。雖然我還沒(méi)有豐富的工程實(shí)踐經(jīng)歷,但是第一章中提出的一種錯誤的想法“能運行的爛程序總比什么都沒(méi)有強”非常熟悉,在以往寫(xiě)簡(jiǎn)單的練習題時(shí),即使代碼量很小,我首要追求的就是AC這道題,對代碼質(zhì)量不管不顧,它也解釋了這種做法的原因,即:希望快點(diǎn)完成,早點(diǎn)結束手上的任務(wù)。然而,制造混亂將會(huì )帶來(lái)巨大的代價(jià),往往混亂的代碼在以后的維護中將會(huì )越來(lái)越混亂,隨著(zhù)混亂的增加,生產(chǎn)力將會(huì )降低趨向于零,后果不堪設想。開(kāi)發(fā)者一方面被之前的混亂拖后腿,另一方面背負期限的壓力只好制造混亂,程序員太難了。文中提到做的快的唯一方法就是始終盡可能保持代碼整潔,可是我又不能讓我之前的開(kāi)發(fā)者保持代碼的整潔,那這樣就導致程序員一方面要忍受之前的開(kāi)發(fā)者制造的混亂,又要努力從現在開(kāi)始盡量保持代碼的整潔,還是太難了,所以往往糟糕的代碼只會(huì )越來(lái)越爛,但是不能因為困難就制造混亂,我們要做負責任的開(kāi)發(fā)者、程序員,不僅要為我們的project負責,也是為后來(lái)的開(kāi)發(fā)、維護人員負責。保持代碼整潔,停止制造混亂,從我做起。不同的人對整潔代碼的定義不同,文中記錄了一些厲害的程序員的看法,比如Bjarne說(shuō)“我喜歡優(yōu)雅和高效的代碼。代碼邏輯應當直截了當,叫缺陷難以隱藏;盡量減少依賴(lài)關(guān)系,使之便于維護;依據某種分層戰略完善錯誤處理代碼;性能調至最優(yōu),省得引誘別人做沒(méi)規矩的優(yōu)化,搞出一堆混亂。整潔的代碼只做好一件事”,即:“優(yōu)雅”和“效率”;Grady的觀(guān)點(diǎn)與Bjarne類(lèi)似“整潔的代碼簡(jiǎn)單直接。簡(jiǎn)潔的代碼如同優(yōu)美的散文。整潔的代碼從不隱藏設計者的意圖,充滿(mǎn)了干凈利落的抽象和直截了當的控制語(yǔ)句”。文中還引用了好多人的看法,其中提到的“讓營(yíng)地比你來(lái)時(shí)更干凈”總結出一條很好的規定。
接著(zhù),作者從“命名”、“函數”、“注釋”、“格式”、“對象和數據結構”、“錯誤處理”、“邊界”、“單元測試”、“類(lèi)”、“系統”、“跌進(jìn)”、“并發(fā)編程”等不同方不同層次分別闡述了寫(xiě)整潔代碼需要遵守的小技巧,并給出了案例分析,以及3個(gè)Java項目的剖析與改進(jìn)過(guò)程。
命名方面要做到名副其實(shí),名稱(chēng)應該能答復所有的大問(wèn)題,它應該告訴你它為什么會(huì )存在,它做什么事,應該怎么用;命名要避免誤導,必須避免留下掩藏代碼本意的錯誤線(xiàn)索;命名要做有意義的區分;使用讀得出來(lái)的名稱(chēng);使用可搜索的名稱(chēng),例如用WORK_DAYS_PER_WEEK比數字5好得多;命名應該準確,每個(gè)概念對應一個(gè)詞,不用雙關(guān)語(yǔ),添加有意義的語(yǔ)境但不要添加沒(méi)用的.語(yǔ)境。我在我為數不多的編程經(jīng)歷中,就感受到了命名的難度,受限于自己的描述技巧和文化水平都太平庸,命名總是稀奇古怪,沒(méi)有規范。最近在學(xué)習交換的程序時(shí),也深受命名的折磨,也許也是自己對協(xié)議的理解不夠透徹,總覺(jué)得程序里面一些PDU定義和協(xié)議里面的規定不夠統一,我就認為程序里面對PDU元素定義的名稱(chēng)
應該與協(xié)議里保持完全一致,這樣清晰明了,對于我這樣的菜鳥(niǎo)新手,分析程序里定義的PDU一些元素的含義花了我好大力氣,深受打擊。
關(guān)于函數,第一規則是要短小,我一直明白這個(gè)道理,但是要做到還是很難;函數應該只做一件事,做好這件事,似乎好像做到這條要求,函數應該就會(huì )短小很多,要判斷函數是否不止做了一件事就是看是否能再拆出一個(gè)函數;函數別重復自己,分隔指令與詢(xún)問(wèn)。還有一些規則,由于自己知識水平有限不能理解,只能在以后漫長(cháng)的學(xué)習工作中慢慢體會(huì )實(shí)踐,例如每個(gè)函數一個(gè)抽象層級、函數參數最理想參數數量是零,其次是一,再次是二,應盡量避免三,在我的認知里還不能理解函數怎么能沒(méi)有參數,以及使用異常代替返回錯誤碼。
萬(wàn)萬(wàn)沒(méi)想到,之前都隨便寫(xiě)的注釋也有講究,雖然有些規則不明白具體意義,只能在以后的實(shí)踐中慢慢體會(huì )實(shí)踐!笆裁匆脖炔簧戏胖昧己玫淖⑨寔(lái)得有用。什么也不會(huì )比亂七八糟的注釋更有本事搞亂一個(gè)模塊。什么也不會(huì )比陳舊、提供錯誤信息的注釋更有破壞性”,注釋的恰當用法是彌補我們在用代碼表達意圖時(shí)遭遇的失敗,我很贊成作者解釋的理由“注釋存在的時(shí)間越久,就離其所描述的代碼越遠,越來(lái)越變得全然錯誤,原因很簡(jiǎn)單,程序員不能堅持維護注釋”。這一章讓我印象深刻,注釋不能美化糟糕的代碼,帶有少量注釋的整潔而有表達力的代碼要比帶有大量注釋的零碎而復雜的代碼像樣得多,與其花時(shí)間編寫(xiě)解釋你搞出的糟糕的代碼的注釋?zhuān)蝗缁〞r(shí)間清潔那堆糟糕的代碼。盡量用代碼來(lái)闡述解釋?zhuān)髡哒J為好注釋有法律信息、對意圖的解釋、對某些晦澀的參數或返回值的意義翻譯、警告、 TODO注釋?zhuān)f(wàn)不要喃喃自語(yǔ)寫(xiě)一些廢話(huà)注釋?zhuān)苡煤瘮祷蜃兞繒r(shí)就別用注釋。
關(guān)于格式,代碼風(fēng)格和可讀性會(huì )影響到可維護性和擴展性,作者介紹了垂直格式和橫向格式。垂直格式上,應該向報紙學(xué)習,名稱(chēng)應當簡(jiǎn)單一目了然,源文件最頂部應該給出高層次概念和算法,細節應該往下漸次展開(kāi),垂直方向上每個(gè)函數之間應該有空白行隔開(kāi),被調用的函數應該在執行調用的函數下面;橫向格式上,賦值操作符周?chē)由峡崭褡址,函數名和左圓括號之間加空格,乘法因子之間不加空格,加減法運算項之間用空格隔開(kāi),用好縮進(jìn)。最后要服從團隊規則,要讓一組開(kāi)發(fā)者采用團隊規則從而軟件擁有一以貫之的風(fēng)格。
寫(xiě)整潔代碼,需要遵循大量的小技巧,貫徹刻苦習得的“整潔感。這種“代碼感”就是關(guān)鍵所在。寫(xiě)代碼和寫(xiě)文章等創(chuàng )作很像,其實(shí)倒不如把寫(xiě)代碼也看成一種創(chuàng )作,在寫(xiě)論文或文章時(shí),你先想什么就寫(xiě)什么,然后再打磨它,初稿也許粗陋無(wú)序,你就斟酌推敲,直至達到你心目中的樣子,代碼也需要打磨直至成為整潔的代碼。但是感覺(jué)實(shí)際工作中,大部分代碼調試至通過(guò)測試就耗費了大量精力,通過(guò)測試后也就沒(méi)有更多力氣來(lái)打磨代碼了。
在閱讀這本書(shū)的時(shí)候,我感到非常吃力,有沒(méi)有Java基礎的原因,也有缺乏軟件開(kāi)發(fā)一些基本理念的原因,還有缺乏實(shí)戰的經(jīng)歷,很多應用背景我都理解不了,很多地方對我來(lái)說(shuō)有點(diǎn)晦澀難懂,在今后的學(xué)習、工作中,要繼續對其中提到的規則進(jìn)行理解、消化、實(shí)踐最終變成自己在編程中本能的能力,希望自己能在以后的學(xué)習中多多積累軟件開(kāi)發(fā)的一些“常識”,能夠養成良好的軟件開(kāi)發(fā)的習慣,形成屬于自己的軟件開(kāi)發(fā)思維,我覺(jué)得這些大牛程序員就是在長(cháng)時(shí)間的實(shí)踐中不斷思考不斷通過(guò)思考提升自己的代碼質(zhì)量,然后日積月累形成了屬于自己的一套理論。我也希望自己在寫(xiě)代碼的時(shí)候能夠多思考,怎么寫(xiě)更好,怎么寫(xiě)能夠既實(shí)現功能又整潔、可讀性高、可維護性和可擴展性好,這一定需要長(cháng)時(shí)間的學(xué)習、實(shí)踐、思考才能慢慢進(jìn)步逐步提高。不要僅僅只是追求實(shí)現功能,這只是最基本的目的,我覺(jué)得隨著(zhù)自己的進(jìn)步,可以提高對自己的要求,寫(xiě)混亂的代碼即使實(shí)現了功能也要丟棄它,還希望自己有一天能有能力把我負責的程序都能進(jìn)一步規范一下?戳诉@本書(shū),程序員的工作在我心中又上升了N個(gè)階層的難度,讓我明白自己還有很多基礎知識需要學(xué)習,還需要大量實(shí)踐實(shí)戰,默默給自己加油。
【《Clean Code》讀后感】相關(guān)文章:
clean的反義詞08-10
Unit 11 Could you please clean your room?說(shuō)課稿11-04
高中英語(yǔ)作文|干凈的車(chē)廂 Clean Train01-12
《名人故事》讀后感-讀后感06-23
《百萬(wàn)英鎊》讀后感-讀后感800字 讀后感范文03-31
高老頭讀后感作文-讀后感04-12
父親的病讀后感-讀后感04-12
《童年》讀后感_讀后感700字09-13
童年600字讀后感-讀后感06-19
《童年》700字讀后感-讀后感06-19