如何寫函數?

伊谢尔伦
發布: 2023-03-02 21:52:01
原創
3148 人瀏覽過

程式中曾經包含子程式和函數(可能我沒有經歷這種年代),如今,程式中僅有函數這種方式保留下來。

程式語言中的函數,分為內建函數和自訂函數或類別方法。內建函數可以直接調用,而自訂函數是程式設計師編寫的。

函數是程式的極其重要的組成部分,要寫好,需要遵守一些原則。

函數要短小。函數中不應該容得下嵌套結構,如if...else等。在if..else、while、for或foreach等嵌套結構中,程式碼不應該超過一行,這唯一一行程式碼,是對函數的呼叫。請看代碼A。

function test($bool){
         $age = 0;
         if($bool){
               $age = 5;
          }else{
                $age = 0;
          }
          return  $age;
}
$bool = true;
echo test($bool);
登入後複製

上面這段程式碼,函數體中包含if...else,嵌套結構,根據」函數要短小「的原則,上面的程式碼應該改寫為程式碼B:

function testTrue(){
        $age = 5;
         return $age;
}
登入後複製
function testFalse(){
        $age = 0;
        return $age;
}
登入後複製
$bool = true;
if($bool){
      echo testTrue();
}else{
        echo testFalse();
}
登入後複製

我喜歡用程式碼B風格的代碼。它能簡化主幹程式碼(抽象層次高的程式碼)。實際程式設計中,我綜合了程式碼A和程式碼B,因為我在程式碼B的基礎上增加了一個函數test。請看代碼C。

function testTrue(){
       $age = 5;
       return $age;
}
function testFalse(){
        $age = 0;
        return $age;
}
function test($bool){
        $age = 0;
        if($bool){
             $age  =  testTrue();
         }else{
              $age  =  testFalse();
   }
$bool = true;
echo test($bool);
登入後複製

三種風格的程式碼,孰優孰劣?我無法分辨。程式設計實作中,我選用C風格的程式碼。寫出短小的函數,原因是,短小的函數,易讀,方便調試。當然,也受制於許多程式設計師程式設計實務中總結出的程式設計原則:一個函數只做一件事情。

《程式碼整潔之道》用這樣的話強調這個程式設計原則:三十多年來,無數人用無數不同的表達方式傳遞出這樣一個觀點,一個函數應該只做一件事情;該函數應該做好這件事情;函數應該做完這件事情。

掌握這項原則,必須弄清楚:怎麼叫一件事情?一件事情,是指這些事情都在同一個抽象層次。舉個例子,函數A把訂單資料存到資料庫,並在這個過程中建立券號、發送簡訊。表面上看,有三件事情,但由於它們都是同一個抽象層次上的事情,所以,實際上,只有一件事情。如果用創建券號中的程式碼來取代建立券號函數,函數A就是做了兩件事。

此外,「從上往下「讀函數(to...do),也是區分函數是否做了一件事情的好方法。初級程式設計師要學會這項技巧,並不容易。

看函數的區段,也就是一個函數能否再分拆出其他的函數,也是辨識函數是否只做一件事情的方法。

我覺得,根據」抽象層次「,就可以判斷函數是否只做了一件事情。


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!