首頁 後端開發 php教程 如何寫函數?

如何寫函數?

Dec 03, 2016 am 09:40 AM

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

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

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

函數要短小。函數中不應該容得下嵌套結構,如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),也是區分函數是否做了一件事情的好方法。初級程式設計師要學會這項技巧,並不容易。

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

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


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

11個最佳PHP URL縮短腳本(免費和高級) 11個最佳PHP URL縮短腳本(免費和高級) Mar 03, 2025 am 10:49 AM

11個最佳PHP URL縮短腳本(免費和高級)

Instagram API簡介 Instagram API簡介 Mar 02, 2025 am 09:32 AM

Instagram API簡介

在Laravel中使用Flash會話數據 在Laravel中使用Flash會話數據 Mar 12, 2025 pm 05:08 PM

在Laravel中使用Flash會話數據

構建具有Laravel後端的React應用程序:第2部分,React 構建具有Laravel後端的React應用程序:第2部分,React Mar 04, 2025 am 09:33 AM

構建具有Laravel後端的React應用程序:第2部分,React

簡化的HTTP響應在Laravel測試中模擬了 簡化的HTTP響應在Laravel測試中模擬了 Mar 12, 2025 pm 05:09 PM

簡化的HTTP響應在Laravel測試中模擬了

php中的捲曲:如何在REST API中使用PHP捲曲擴展 php中的捲曲:如何在REST API中使用PHP捲曲擴展 Mar 14, 2025 am 11:42 AM

php中的捲曲:如何在REST API中使用PHP捲曲擴展

在Codecanyon上的12個最佳PHP聊天腳本 在Codecanyon上的12個最佳PHP聊天腳本 Mar 13, 2025 pm 12:08 PM

在Codecanyon上的12個最佳PHP聊天腳本

宣布 2025 年 PHP 形勢調查 宣布 2025 年 PHP 形勢調查 Mar 03, 2025 pm 04:20 PM

宣布 2025 年 PHP 形勢調查

See all articles