這本書剛開始讀起來是比較無趣的,這本書第一章主要就是寫為什麼以及如何閱讀代碼和如何閱讀這本書。我看了之後有以下幾點收獲:
1.要養成習慣,經常花時間閱讀别人編寫的高品質代碼;
2.閱讀代碼的過程中,快速從壞代碼中區分出好代碼是一項有價值的技能,接觸編碼的反面例子有助于提高這種技能,但不應該從品質低下的代碼中學習如何正确程式設計;
3.要有選擇的閱讀代碼,同時還要有自己的目标;
4.注意并重視代碼中特殊的非功能性需求(沒太看明白非功能性需求是什麼?);
5.從小型程式開始閱讀,不要立即陷入大型系統研究中;
6.積極的閱讀現有代碼的方式是改進它;
當然還有以具體代碼作為範例,并注重維護、演進、重用和審查,這些都比較重要,下面的章節還會有所涉及,在此就不贅述了。
第二章講的是基本的程式設計元素,剛開頭就展示了一個完整的程式,并進行了比較詳細的講述,然後下邊就是介紹函數和全局變量、while循環、條件和塊、switch語句、for循環、break和continue語句、字元和布爾型表達式、goto語句、小範圍重構、do循環和整形表達式再論控制結構等一些比較基礎的東西。這些大部分都有相關課程講過,我就沒有很系統的閱讀,隻是大略的看了看,在這就不詳細介紹了,不過我打算以後再仔細看看這一章,也能順便鞏固一下以前學過的東西,所謂“溫故而知新”,古人的智慧是值得信賴的。
第三章講的是進階C資料類型,主要也就是介紹了指針、結構、共用體、動态記憶體配置設定以及typedef聲明,這些我們在以前的學習中也或多或少的有所涉及,它每個子產品後都有相應的代碼執行個體并有詳細講解。這些東西看上去熟悉又陌生,熟悉是因為以前有的學科學習過,有的還不隻學過一次,陌生是因為雖然學過,但我都沒有很好地掌握,想要看透徹還得下功夫,這的确是個問題。這讓我意識到自己之前的學習很不穩固,必須得重新系統學習一下,才能夠運用,當然也得像這本書上說的一樣,要結合執行個體,紙上談兵是毫無作用的。
第四章則主要介紹了C資料結構,主要有向量、矩陣和表、棧、隊列、映射、集合、連結清單、樹以及圖等,其中大部分都是我們資料結構這門課上已經講過的内容,這些内容還算比較熟悉,因為當時為了通過這門課還真是破費了些功夫的。由一開始的不能了解,到慢慢後來了解了原理及方法,那本課本也是翻了幾遍的。但是呢,最後的分數不是太理想,我自己也知道問題在哪,無非就是還是沒有了解透徹,沒有結合程式,隻是單純的想應付過筆試,想達到及格的要求罷了,平時的課後作業也都是找人講解最後做出來,交上去的,其實自己都沒有很動腦子的思考過思路,聽别人講解完,本應該自己好好思考思考,為什麼是那樣,為什麼别人能做出來,自己卻做不出來,為什麼别人能想到,自己想不到。這些問題都造成了現在我這種窘迫的境地,似曾相識,又形同陌路,真是追悔莫及啊。理論知識能夠勉強過關,但是一到實踐了,準備程式設計了才發現,自己好像什麼都不會。每次開始找思路都冥思苦想,浪費大量時間也想不出來聽了别人的思路,就覺得,哦,原來是這樣啊,原來這麼簡單啊,可是我為什麼想不出來呢?
其實平時看這些書,都沒有說當做上課有考試那樣認真仔細的靜下心來看,好多東西都吃不透。就像現在看這本書,想盡全力好好看,又提不起興趣,明明發現基本上這幾章都是以前學過的東西,應該看起來不是太費勁,但看了還是有點頭疼,頭疼自己不會吧,還不能下定決心自己重新去學,急得像熱鍋上的螞蟻,還不知道怎麼辦。唉,想想現在都大三了,也看到了大四學長學姐們為了找工作,每天忙得焦頭爛額,找到了還好,找不到還都時時刻刻惦記着,吃吃不香,睡睡不安穩,真不敢想象自己到時候是什麼樣子啊,還能找到工作嗎?
想想還是比較愁人的的,時間真的不多了,果斷得真做起來了啊,希望有像我一樣的同學看到後也能共勉,看清現狀,是時候努力了。