《代碼大全2》閱讀感想


我選擇閱讀的是《代碼大全》第二版這本書。

第一眼看到這本書的直觀感受是:這也太厚了點。不過它的厚度或許也說明了它的思想的深度和廣度。我是先翻了一下前言和目錄,感覺講的東西確實挺多的,也挺細致的。

這本書我現在還在看,這么厚的一本書十天半個月自然是很難看完的,我覺得也沒必要一下子看完,好書是要慢慢品的。下面,對我閱讀的幾章做一下總結:

1個人性格

查看目錄后,我發現我對 “個人性格”(第33章)很感興趣,然后最開始也是看的這部分。作者主要介紹了幾種與編程最有關系的幾種性格:謙虛、求知欲、誠實、創造性和紀律,以及高明的偷懶。我是一口氣把這部分閱讀完的,第一次看專業方向的書籍有種看散文雜文的感覺。

舉例來說,作者在強調代碼的可讀性時這樣寫道:

”我曾見過最糟糕的代碼,其作者不讓任何人看懂她的程序。最后,她的上司威脅要解雇她,如果她還不合作的話。她的代碼沒有注釋,變量名盡是些x,xx,xx1和xx2之類的東西,而且還都是全局變量。上司的老板卻以為她是個高手,因為她能很快改正錯誤。其實正是其低劣的代碼質量給了她表現糾錯能力的大量機會。”

我覺得這段話簡直就是一篇微小說,寫的有趣又真實。作者的語言風格也是很平易近人的,所以書很好讀,一點都不晦澀難懂。

“編程狂人”一節前面那段引述:

“如果你還沒有對某個程序花費至少一個月的時間——一天工作16個小時,其余8小時也睡得不安穩,老是夢到它,為解決“最后錯誤”連熬幾夜——你就算沒有編過真正復雜的程序,你也不會感受到編程中最激動人心的東西。

——Edward Yourdon”

作者接着寫的是這樣的一句話”這種對編程的痴迷簡直是胡鬧”。這個和我的第一個問題有關——

編程人員是不是應當以編程為第一位,犧牲睡眠也是值得鼓勵的?

我當然知道這算不上是一個問題,個人習慣,因人而異嘛,沒什么好說的。我其實很尊重那些熬夜編程的人,首先這是個人的選擇,其次這其中肯定是有着對編程的濃烈的興趣的。看到作者的這段話,感覺也沒必要因為沒有徹夜奮戰編程而質疑自己對於編程的熱情。

2布局與風格

這是關於“布局與風格”(第33章)的一些總結和思考。

在“數據聲明的布局”一節中,作者強調了3點:

每行只聲明一個變量、變量聲明應盡量接近其首次使用的位置以及合理組織聲明順序。

后兩點我也十分贊同,但是對於第一點,我覺得還是有失偏頗。同樣意義的變量放在一行聲明也無可厚非吧,而且還節省版面。

另外,作者在第758頁也提到了他關於賦值語句等號是否對齊這一問題的看法的轉變,有些問題的看法是會根據實踐經驗的增加而發生改變的。或許我以后代碼寫多了看法也會變,同理,作者應該也是這樣。

在“好布局有什么用”一節中提到的括號使用風格:

for (…)

{

}

  以及

  for (…)  {

  }

我之前是偏向於后一種,現在卻喜歡前一種了。有的時候也會想:程序布局也需要重視嗎?這是我的第2個問題,和節標題表達的意思差不多。當然,答案是是的。

特別喜歡作者在這節最后的一段話

“這件事情連同上面提到的研究,都表明結構能幫助高手去感知、理解和記住程序的重要特性。編程高手通常會恪守自己的風格,即使和其他高手的風格迥然不同。底線是前后如一地組織程序,相比而言,關於程序細節特定的方法就次要得多了。”

回答得真大氣!

3一般控制問題

在“布爾表達式的常見問題”一節,作者提到”在C家族語言中,應該把常量放在比較的左端”,因為如果誤把==寫成=,將常量放在等號左側,編譯器會捕獲這個錯誤。感覺這一點平常老師也提過,但是自己寫程序時還是沒有那樣做,爭取以后把這個改一下。

在“空語句”一節以及”避免使用空循環”一節中,作者提到應該為空語句創建一個DoNothing()預處理宏或者內聯函數。可是我覺得沒必要,一個分號我也覺得挺順眼的。不過,也許是出於工程學的角度,作者才會這樣建議吧,畢竟代碼多了,分號很可能看花眼。這算是一個小問題吧:有必要避免空循環嗎?

4協同構建

因為這次是首次接觸到“結對編程”,所以特意把 “協同構建”(21章)這一章看了下。雖然課上老師提過結對編程的諸多好處,可是我覺得要想成功運用結對編程肯定不容易,於是第4個問題:結對編程如何成功有效地被利用?剛剛書中也有這方面的回答,作者在“成功運用結對編程的關鍵”一節中提出了幾條准則:

用編碼規范來支持結對編程

不要讓結對編程變成旁觀

不要強迫在簡單的問題上使用結對編程

有規律地對結對人員和分配的工作進行輪換

鼓勵雙方跟上對方的步伐

確認兩個人都能夠看到顯示器

不要強迫程序員與自己關系緊張的人相對

避免新手組合

指定一個組長

就我這次結對的經歷來看,我覺得第二點尤為重要,不掌握鍵盤的人應該分析代碼,這樣雖然你的手沒在敲代碼,但是還是參與進來了,感覺在實踐中參與感是很重要的。

5軟件工藝

書中的側邊部分會有一些交叉參考的提示,以及一些人關於這部分的言論。我覺得這真的是很值得贊揚的地方。回正題——我在交叉參考里看到過很多次“首先為人寫程序,其次才是為機器”,這正是貫穿全本書的一個主題,即強調可讀性。我覺得這句話都可以作為一種准則了。

另外,之前我對於編程語言的選擇有一點疑問,不清楚自己到底該不該學很多門語言,也不知道該選擇哪種去學習。 “深入一門語言去編程,不浮於表面”一節給了我一點啟示。我現在的看法是:可以首先多了解自己比較感興趣的幾門語言,然后選擇一門深入學習。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM