- 論壇徽章:
- 0
|
PHP 代碼規(guī)范
命名規(guī)范
Θ 類文件都以.class.php為后綴,使用駝峰法命名,并且首字母大寫,例如 Pay.class.php;
Θ 類名和目錄_文件名一致。例如:類名Zend_Autoloader的目錄是Zend/Autoloader.class.php;
Θ 函數(shù)的命名使用小寫字母和下劃線的方式。例如:get_client_ip;
Θ 方法的命名使用駝峰法,首字母小寫或者使用下劃線"_",例如listComment(),_getResource(),通常下劃線開頭的方法屬于私有方法;
Θ 屬性的命名使用駝峰法,首字母小寫或者使用下劃線"_",如$username,$_instance,通常下劃線開頭的屬性屬于私有屬性;
Θ 常量以大寫字母和下劃線"_"命名,如"HOME_URL";
常用名詞 1>list名詞(單數(shù)),如listApple,一看我們就知道讀取蘋果列表,我們沒有必要寫成getApples或者listApples或readApples——因為get我們規(guī)定一般用于讀取單個數(shù)據(jù),如getApple.listApples不加s我們也知道是取蘋果列表(保證盡量縮短變量命名);
2>get名詞(單數(shù));
3>名詞Total,表示某個東西的總數(shù)。如expenseTotal;
4>found:表示某個值是否已經(jīng)找到;
5>uccess或ok:一項操作是否成功;
6>done:某個工程是否完成;
7>error:是否有錯誤發(fā)生;
8>result:返回的結(jié)果
代碼重構(gòu)
1.函數(shù)或者方法體內(nèi)的代碼盡量控制在一個屏幕內(nèi)。
2.類中不使用的方法隨機(jī)刪除。
3.修改別人的類中方法,要簽名。
4.在每個模塊內(nèi)寫個readme文件(用于比較復(fù)雜業(yè)務(wù)的說明或代碼說明)。
5.盡量讓每個類做自己的事,每個函數(shù)做一件事。
常用代碼
用&&或||簡化操作
簡化前:- ?$a=1;
- $b = 0;
- if(isset($a)){
- $b=1;
- print($b."\n");
- }
-
- if($b!=0){
- print($b."\n");
- }
復(fù)制代碼 簡化后:- ?$a=1;
- $b = 0;
- isset($a) && ($b=1) && print($b."\n");
- $b == 0 || print($b."\n");
復(fù)制代碼 明顯代碼看起來更加整齊,更加簡單!
判斷"=="時,我們有可能會把"=="寫成"=",這樣的bug我們很難調(diào)試圖來。所以,把常量放在前面,編譯器就能判斷出來。
之前:- ?$a = 1;
- if($a = 1){
- echo '$a == 1';
- }
復(fù)制代碼 之后:- ?$a = 1;
- if(1 = $a){
- echo '$a == 1';
- }
復(fù)制代碼 明顯,常量放在前面的話,編譯器就能判斷錯誤。
正規(guī)格式:- ?$a = 1;
- if(1 == $a){
- echo '$a == 1';
- }
-
復(fù)制代碼 查找表法
之前:- ?/*錯誤碼:4,5,7,8的時候返回狀態(tài)1,錯誤碼是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";
復(fù)制代碼 之后:- ?/*錯誤碼:4,5,7,8的時候返回狀態(tài)1,錯誤碼是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";
復(fù)制代碼 明顯代碼更加凝練,更加清楚,更易懂,速度也更快!
總結(jié)
本來想把什么設(shè)計模式也往常用代碼里放置,但是太多了,不太好放。這些只是微部而已!
大家如果有更好的寫法的話,可以留言。 |
|