第三章 函式 讀書心得

2021-06-17 22:19:45 字數 1722 閱讀 6792

1. 短小

- 函式盡可能的維持在一屏可見的範圍內。20行封頂**最好。**短小除了閱讀輕鬆外,更便於理解,出錯的概率也比較小。

2. 只做一件事情

- 我們常常期望函式具有可擴充套件性,貌似有點不一致???

3. 每個函式乙個抽象層級

- 每個函式都對應乙個抽象層級

- 函式由相同抽象層級的其他函式組成

自頂向下讀**:向下規則

4. switch語句

***x

5. 使用描述性名稱

- 「如果每個函式都讓你感到深合己意,那就是整潔**」

- 長而具有描述性的名稱比短卻費解的名稱要好

- 使用某種命名約定,讓函式名稱中的多個單詞容易閱讀,然後使用這些單詞給函式取個能說清其功用的名稱

- 命名方式上下保持一致

6. 函式引數

- 函式引數最好越少越好,理想個數為0,其次1個,再次2個,盡量避免3個,有足夠多的理由才能使用3個以上引數

- 引數會帶來太多的概念性。(入參,出參)

- 引數會是測試的難度加大,難以保證測試覆蓋度

- 一元函式的普遍形式。 1. 詢問引數,2. 轉換引數 3. 事件

- 不要將flag作為引數傳遞給函式,因為這顯而易見的告知他人這個函式不只是做一件事情(false時一件事,true時另外一件事情)

- 二元函式 可以通過一些方法轉化為一元函式,比如寫成某種物件的成員函式

- 多元引數,適時進行封裝

- 無***

還是只能做一件事情,但即使函式承諾只做一件事情,但還是會做其他被藏起來的事。

如果函式名只是乙個掩護,而在實現中做了與描述功能不相符或者額外的其他事情,但這是極其危險的。強調名副其實!

避免使用輸出引數,可以使用修改類的屬性方式替換。

7. 分隔指令與詢問

- 函式要麼做什麼事,要麼回答什麼事,二者擇其一

8. 使用異常替代返回錯誤碼

- 返回錯誤碼可能會導致深層次的巢狀結構。因為需要做錯誤處理

- 使用try catch,可以將錯誤**從主路徑中分離出來

9. 抽離try/catch**塊

- 不要在主路徑中使用try/catch, 會導致**結構混亂

- 可以抽離出來封裝成函式

10. 錯誤處理就是一件事

- 這意味著,處理錯誤的函式不該做其他事情,所以這個函式的第乙個單詞應該是try,另外catch/finally後面也不應該有其他內容。

11. 錯誤碼的依賴

- 返回錯誤碼通常暗示有某個類或者列舉定義了所有的錯誤碼。

- 那麼其他使用這些錯誤碼的類就需要去include這個類/標頭檔案,那麼如果需要新增新的錯誤碼

- 就可能需要所有引用過的類都需要重新編譯

- 如果使用異常代替錯誤碼,新的異常可以直接從異常類中派生出來,無需重新編譯和重新部署。

12. 別重複自己

- 減少重複**

13. 結構化程式設計

- 遵循乙個入口,乙個出口原則,每個函式只能有乙個return,迴圈中不能有break或continue語句,永遠不能有goto

- 這只是針對大函式,對於小函式沒有太大關係

- 另外dsp程式設計中迴圈中的break和continue除了破壞**結構之外,增加了跳轉破壞函式的並行性

- 所以函式只要保持短小,偶爾出現的return, break 或 continue語句沒有壞處,甚至還比單入單出原則更有表達力。

- 另外,溝通只在大函式中才有道理,所以盡量避免使用

第三章 函式

函式是模組劃分的基本單位,是對外處理的一種抽象 c和c 的子程式體現為函式 呼叫其他函式的被稱為主函式 被其他行數呼叫的稱為被調函式 函式的語法形式 型別說明符 函式名 含型別說明的形式參數列 語句序列 形式引數 形式參數列 簡稱形參 表的內容如下 type1 name1,type2 name2,t...

C Primer閱讀心得(第三章)

1.在標頭檔案 h或者 hpp 中不要使用using語句。因為如果標頭檔案中使用了using語句後,每個include它的原始檔中都預設包含了這個using,那麼可能會與這個原始檔中的變數名或者其他的標頭檔案中的變數名產生衝突。2.string物件的讀入 過載的 以空格為結束符,而getline以換...

第三章讀書筆記

程序管理 3.1程序 程序就是處於執行期的程式 目標碼存放在某種儲存介質上 但程序並不僅僅侷限於一段可執行程式 執行執行緒,執行緒,是程序活動的物件。兩種虛擬機制 虛擬處理器和虛擬記憶體。最終,程式通過exit 系統呼叫退出執行。3.2程序描述及任務結構 核心把程序的列表存放在叫做任務佇列的雙向迴圈...