中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

如何編寫函數(shù)?

2018-07-20    來源:編程學(xué)習(xí)網(wǎng)

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬Linux鏡像隨意使用

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

編程語言中的函數(shù),分為內(nèi)置函數(shù)和自定義函數(shù)或類方法。內(nèi)置函數(shù)可以直接調(diào)用,而自定義函數(shù)是程序員編寫的。

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

函數(shù)要短小。函數(shù)中不應(yīng)該容得下嵌套結(jié)構(gòu),如if...else等。在if..else、while、for或foreach等嵌套結(jié)構(gòu)中,代碼不應(yīng)該超過一行,這唯一一行代碼,是對(duì)函數(shù)的調(diào)用。請(qǐng)看代碼A。

function test($bool){

         $age = 0;

         if($bool){

               $age = 5;

          }else{

                $age = 0;

          }

          return  $age;

}

$bool = true;

echo test($bool);

上面這段代碼,函數(shù)體中包含if...else,嵌套結(jié)構(gòu),根據(jù)”函數(shù)要短小“的原則,上面的代碼應(yīng)該改寫為代碼B:

function testTrue(){

        $age = 5;

         return $age;

}

function testFalse(){

        $age = 0;

        return $age;

}

$bool = true;

if($bool){

      echo testTrue();

}else{

        echo testFalse();

}

我喜歡用代碼B風(fēng)格的代碼。它能簡(jiǎn)化主干代碼(抽象層次高的代碼)。實(shí)際編程中,我綜合了代碼A和代碼B,因?yàn)槲以诖aB的基礎(chǔ)上增加了一個(gè)函數(shù)test。請(qǐng)看代碼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);

三種風(fēng)格的代碼,孰優(yōu)孰劣?我無法分辨。編程實(shí)踐中,我選用C風(fēng)格的代碼。寫短小的函數(shù),原因是,短小的函數(shù),易讀,便于調(diào)試。當(dāng)然,還受制于許多程序員編程實(shí)踐中總結(jié)出的編程原則:一個(gè)函數(shù)只做一件事情。

《代碼整潔之道》用這樣的話強(qiáng)調(diào)這個(gè)編程原則:三十多年來,無數(shù)人用無數(shù)不同的表達(dá)方式傳遞出這樣一個(gè)觀點(diǎn),一個(gè)函數(shù)應(yīng)該只做一件事情;該函數(shù)應(yīng)該做好這件事情;該函數(shù)應(yīng)該做完這件事情。

掌握這項(xiàng)原則,必須弄明白:怎么叫一件事情?一件事情,是指這些事情都在同一個(gè)抽象層次上。舉個(gè)例子,函數(shù)A把訂單數(shù)據(jù)存到數(shù)據(jù)庫,并在這個(gè)過程中創(chuàng)建券號(hào)、發(fā)送短信。表面上看,有三件事情,但由于它們都是同一個(gè)抽象層次上的事情,所以,實(shí)際上,只有一件事情。如果用創(chuàng)建券號(hào)中的代碼來取代創(chuàng)建券號(hào)函數(shù),函數(shù)A就是做了兩件事情。

此外,“從上往下“讀函數(shù)(to...do),也是區(qū)分函數(shù)是否做了一件事情的好方法。初級(jí)程序員要學(xué)會(huì)這一技巧,并不容易。

看函數(shù)的區(qū)段,即一個(gè)函數(shù)能否再分拆出其他的函數(shù),也是識(shí)別函數(shù)是否只做一件事情的方法。

我覺得,根據(jù)”抽象層次“,就可以判斷函數(shù)是否只做了一件事情。

標(biāo)簽: 代碼 數(shù)據(jù)庫

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:關(guān)于未來編程發(fā)展趨勢(shì)的九大預(yù)測(cè)

下一篇:你需要知道的12個(gè)Git高級(jí)命令