溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

PHP 代碼規(guī)范

發(fā)布時(shí)間:2020-05-26 11:16:16 來(lái)源:網(wǎng)絡(luò) 閱讀:211 作者:張立達(dá) 欄目:web開(kāi)發(fā)

命名規(guī)范

 

Θ 類(lèi)文件都以.class.php為后綴,使用駝峰法命名,并且首字母大寫(xiě),例如 Pay.class.php;

Θ 類(lèi)名和目錄_文件名一致。例如:類(lèi)名Zend_Autoloader的目錄是Zend/Autoloader.class.php;

Θ 函數(shù)的命名使用小寫(xiě)字母和下劃線的方式。例如:get_client_ip;

Θ 方法的命名使用駝峰法,首字母小寫(xiě)或者使用下劃線"_",例如listComment(),_getResource(),通常下劃線開(kāi)頭的方法屬于私有方法;

Θ 屬性的命名使用駝峰法,首字母小寫(xiě)或者使用下劃線"_",如$username,$_instance,通常下劃線開(kāi)頭的屬性屬于私有屬性;

Θ 常量以大寫(xiě)字母和下劃線"_"命名,如"HOME_URL";

 

 

常用名詞

 1>list名詞(單數(shù)),如listApple,一看我們就知道讀取蘋(píng)果列表,我們沒(méi)有必要寫(xiě)成getApples或者listApples或readApples——因?yàn)間et我們規(guī)定一般用于讀取單個(gè)數(shù)據(jù),如getApple.listApples不加s我們也知道是取蘋(píng)果列表(保證盡量縮短變量命名);

 2>get名詞(單數(shù));

 3>名詞Total,表示某個(gè)東西的總數(shù)。如expenseTotal;

 4>found:表示某個(gè)值是否已經(jīng)找到;

 5>uccess或ok:一項(xiàng)操作是否成功;

 6>done:某個(gè)工程是否完成;

 7>error:是否有錯(cuò)誤發(fā)生;

 8>result:返回的結(jié)果

 

代碼重構(gòu)

 

 1.函數(shù)或者方法體內(nèi)的代碼盡量控制在一個(gè)屏幕內(nèi)。

 2.類(lèi)中不使用的方法隨機(jī)刪除。

 3.修改別人的類(lèi)中方法,要簽名。

 4.在每個(gè)模塊內(nèi)寫(xiě)個(gè)readme文件(用于比較復(fù)雜業(yè)務(wù)的說(shuō)明或代碼說(shuō)明)。

 5.盡量讓每個(gè)類(lèi)做自己的事,每個(gè)函數(shù)做一件事。

 

常用代碼

 

用&&或||簡(jiǎn)化操作

 

簡(jiǎn)化前:

$a=1;
$b = 0;
if(isset($a)){
    $b=1;
    print($b."\n");
}  
 
if($b!=0){
    print($b."\n");
}

簡(jiǎn)化后:

$a=1;
$b = 0;
isset($a) && ($b=1) && print($b."\n");
$b == 0 || print($b."\n");

 

明顯代碼看起來(lái)更加整齊,更加簡(jiǎn)單!

 

判斷"=="時(shí),我們有可能會(huì)把"=="寫(xiě)成"=",這樣的bug我們很難調(diào)試圖來(lái)。所以,把常量放在前面,編譯器就能判斷出來(lái)。

 

之前:

$a = 1;
if($a = 1){
    echo '$a == 1';
}

之后:

$a = 1;
if(1 = $a){
    echo '$a == 1';
}

明顯,常量放在前面的話,編譯器就能判斷錯(cuò)誤。

正規(guī)格式:

$a = 1;
if(1 == $a){
    echo '$a == 1';
}

 

 

查找表法

 

之前:

/*錯(cuò)誤碼:4,5,7,8的時(shí)候返回狀態(tài)1,錯(cuò)誤碼是1,3,6返回狀態(tài)2*/
$error = 4;
$state = 0;
if($error == 4 || $error == 5 || $error == 7 || $error == 8){
    $state = 1;
}
 
if($error == 1 || $error == 3 || $error == 6){
    $state = 2;
}
echo "$state \n";

 

之后:

/*錯(cuò)誤碼:4,5,7,8的時(shí)候返回狀態(tài)1,錯(cuò)誤碼是1,3,6返回狀態(tài)2*/
$error = 4;
$state = 0;
 
$arr = array(4 => 1, 5 => 1, 7 => 1, 8 => 1, 1 => 2, 3 => 2, 6 => 2);
isset($arr[$error]) && ($state = $arr[$error]);
 
echo "$state \n";

 明顯代碼更加凝練,更加清楚,更易懂,速度也更快!

總結(jié)

 

本來(lái)想把什么設(shè)計(jì)模式也往常用代碼里放置,但是太多了,不太好放。這些只是微部而已!

大家如果有更好的寫(xiě)法的話,可以留言。


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI