代碼大全讀書筆記—第七章 高質量子程序

第七章 建立高質量子程序算法

A.基本概念函數

子程序:爲實現一個特定目的而編寫的一個可被調用的方法或者過程。spa

B.內容設計

1.建立子程序的好處:orm

1)下降複雜度 對象

2)引入易懂的抽象,簡化複雜的布爾判斷接口

經過子程序來隱藏一些信息,就不用去考慮這些信息的細節,例如:對某段只返回布爾類型值得代碼進行封裝,使其成爲一個良好命名的函數或方法,則在須要這段代碼的地方直接調用該函數便可,良好的命名可使該子程序的做用一目瞭然,同時又能夠避免去理解代碼的細節,而只關心代碼的功能。例如:執行一項操做前,須要對用戶的合法性進行判斷,則能夠將該判斷代碼封裝爲函數。input


3)避免代碼重複it

4)提升可移植性io

程序中可能有多個地方要用到相同的代碼段,此時就能夠將這些重複出現的代碼段封裝爲子程序,在須要的地方進行調用,同時,若是須要對封裝的代碼段中的某些數據或者算法進行改變,則只須要在封裝的函數體內部進行一次更改便可,而無需在多個地方進行重複更改,作到一改皆改。

在爲不一樣平臺或系統編寫代碼時,必不可少地會遇到一些平臺相關的部分,例如某些組件或API,用子程序來隔離(包裹)這些部分,則能夠在未來的移植工做中節省時間。

2.子程序設計原則

通常的原則就是提升子程序的內聚性,目標是一個子程序只把一件事情作好。(功能內聚性)

3.良好的子程序命名原則

良好的命名能夠提升程序的可維護性,可以清晰地描述子程序所作的一切

1)命名應當描述子程序所作的全部事情。

2)避免使用無心義的,模糊不清的動詞。例如ProcessInput()

3)不要僅經過數字來造成不一樣的子程序名稱(形如XXX1,XXX2)。

4)函數和過程

函數具備返回值,所以,對於函數的命名,應當可以反映出其返回值,例如cos(),customerID.next()等等

過程一般是針對某個對象進行一種操做,所以對於過程的命名,一般應當是語氣強烈的動詞+賓語的形式,該命名可以反映出這個過程所作的操做。

5)使用對仗詞。 使用對仗的命名使代碼具備更好的可讀性。例如OpenFile() 和CloseFile()

4.子程序的參數使用

1)按照 輸入-修改-輸出的順序排列參數。

排列接口參數時,首先列出僅做爲輸入用途的參數,而後是即做爲輸入,又做爲輸出用途的參數,最後是僅做爲輸出用途的參數。

2)若是幾個子程序使用相似的一些參數,則應該讓這些參數的排列順序在這幾個子程序中保持一致。 例如:print($name,$path)  ,printf($name,$path,$format)

3)使用全部參數。不傳遞用不到的參數。

4)把狀態和出錯變量放在最後。

5)不要把子程序的參數做爲工做變量,應該使用局部變量。

將子程序的參數做爲工做變量可能會改變該參數的值,例以下面的代碼:

function Sample($inputVal)

{

$intputVal = $inputVal * 3;

return $inputVal;   //此處的inputVal的值已經改變了

}

好的作法應當是使用臨時工做變量:

function Sample($inputVal)

{

$temp = $inputVal;

$temp = $temp * 3;

return $temp;  

}

6)把參數個數限定在7個之內。

相關文章
相關標籤/搜索