《代碼大全2》學習筆記2

第二部分:建立高質量的代碼java

第五章:軟件構建中的設計linux

「在大型項目中,設計可能會詳細到讓編碼工做近乎機械化」程序員

「在小型項目中,設計可能就是指用僞代碼寫個類的接口,或者詢問旁邊的程序員那個模式好,畫幾個類的關係圖」編程

——基本沒有經歷過大型項目,小型項目描述的過程跟我接觸的很是的類似,最多多個設計評審。網絡

「當沒人知道對一處代碼的改動會對其餘代碼帶來什麼影響的時候,項目也就中止進展了」架構

——得多複雜,多糟糕的項目纔會到這個地步啊,沒有體會過。編程語言

由於項目主要是網絡的,沒有什麼僱員、僱主之類很容易抽象的對象,因此製做的類基本都是c子程序和數據的集合體。不知道是否是不對,不過也沒感受出來不對啊。ide

「信息隱藏在不斷增加、大量變化的環境裏尤爲有用」工具

剛開始的代碼裏面把全部的私有變量都加了get、set,可是慢慢就以爲麻煩,所有都公開了,感受項目一我的維護,所有私有變量都封裝,有時候沒感受出來什麼意義,若是個別須要特別處理的變量才封裝成方法。性能

不知道得大到什麼程度、或者變更到什麼程序,纔有明顯的意義。或者說,我沒有感受出太大的好處。

「不要使用布爾變量作狀態變量,請使用枚舉」

——這個比較有道理,由於若是從2種變成爲3種類型,修改是個累人的活。

P117 寫總結郵件這點不錯,每次討論後,常常有遺忘,或者有人記錯了,致使爭論和疑問。

 

第六章:能夠工做的類

「不懂得ADT(抽象數據類型)的程序員只是把稍有關係的子程序和數據堆在一塊兒,叫作類。」

——感受本身就是這樣,不過看完了這章,感受就是教你把私有成員隱藏起來,隱藏實現細節,除了接口所有黑盒。

繼承與包含,我用的包含最多,繼承最少。

一直討厭使用繼承,最大的緣由是用source insight看代碼不方面,總是跳到基類的方法裏面去了。不知道什麼閱讀工具會比較好。

「當你想讓基類控制接口,用繼承。當你想染本身控制接口,用包含」

用繼承主要是放在list裏面方便,不過我平時都是用一個類,而後包括一個void*,來訪那些包含的類,再用一個type變量標記是哪一種類。

P155

「避免建立萬能類」——有時候視圖控制數據分離,難道不是這種結構做爲過渡嗎?

「消除可有可無類」——類比結構體放數據方便不少,爲何不能出現專門放數據可是沒有行爲的類?

C++中,只有virtural的方法才能被覆蓋,java默認方法都能被覆蓋。

 

第七章:高質量的子程序

子程序的參數不要超過7個,能夠作成結構體,這樣增長一個參數的時候會比較方便。

不要出現神祕值,用常量定義或者用枚舉來替代100,4.0,3.14之類的常量。

子程序要儘可能單一而明確的任務。

避免把輸入值當作工做變量。

 

子程序能夠避免代碼重複,更易懂,提升可移植性,將來去優化也比較方便。

 

第八章:防護式編程

「主要思想:傳入錯誤的參數也不怕」

斷言是不錯的方法,可是linux裏面用斷言感受不是很好,由於屏幕打印有什麼用處,還不如打印到日誌裏面去,狠點的話,打印日誌後退出程序好了。

處理錯誤有多種狀況,不錯網絡狀況估計就是報警和重試了吧。

在正確性和健壯性之間選擇。

「只有真正的例外才拋出異常,異常應該和斷言同樣,是永遠不該該發生的事情」

——這個好像跟com不符合哦,com主要是拋出異常的,尤爲是解碼的com,拋出的異常種類那叫一個多。

——這裏的理由是「異常弱化的了封裝性」

P203頁批評程序員用異常返回錯誤是爲用而用

——記得之前我上學的時候,一個同窗還說他師兄是真正的面向對象,全部返回錯誤值的地方都用異常處理,當時咱們崇拜了一陣子。不過這裏也未必全對,畢竟是一本書。

「刪除一個對象以前把它填滿垃圾數據」

——夠狠,也是個好主意,這樣不會出現有時候出錯有時候正常的狀況了,若是之後再試圖使用確定崩潰。

 

 第九章:僞代碼編程

一、使用天然語言來精確描述特定的操做。

二、避免使用目標編程語言中的語法元素。(這樣會受制於程序語法上的約束)

三、先超出語言來描述解決問題的意圖。

四、再以足夠低的層次上編寫僞代碼,以即可以近乎自動的從它生產代碼。

五、寫好代碼後,能夠把僞代碼當作註釋存在。

架構應該提早指明多少資源可用,好肯定性能仍是可讀性優先。

「寫一個子程序前先考慮怎麼測試它」——感受很困惑,也沒有舉出例子,不就是檢查輸入輸出嗎?還能考慮什麼?

相關文章
相關標籤/搜索