php代码建议规范

1.代码尽量的短

是指在横向上的短,每行尽量不要超过那条竖线

例如  

 

2.减少大括号嵌套层数,一般不要超过3层

合理使用continue,return, break,尽早退出循环

例如:

$t_sum = 0;
$t_param = 'xxxx';

for($i = 0; $i < 100; $i++){
    if(1 == $i % 2){
        if($t_param == 'name'){
            $t_sum += $i;
            //...更多其他复杂操作
        }
    }  
}

 改造后:

$t_sum = 0;
$t_param = 'xxxx';

for($i = 0; $i < 100; $i++){
    if(1 != $i % 2){
        continue;
    }

    if($t_param != 'name'){
        continue;
    }

    $t_sum += $i;
    //...更多其他复杂操作
}

 例子2:

function test_function($vParam){
    if('name' == $vParam){
       if(...){
           //其他操作
       }
    }
}

 改造后: 

function test_function($vParam){
    if('name' != $vParam){
        return;
    }

    if(...){
        //其他操作
    }    
}

3.参数简单化

函数的参数尽量简单,不要在参数里面做复杂的取值、比较。

除了链式操作的场景之外,建议都简化参数。

能抽取出来形成一个变量的,就形成一个变量,并加上注释。

 

理由:减少人的思考,一眼就能明白是什么意思,减少出错的机会。

 

不好的例子(1):

getUserDataByUserName(getUserNameByUserId(getUserId(), 'GOODS'));

建议的例子:

$tUserId = getUserId();
$tUserName = getUserNameByUserId($tUserId, 'GOODS');
$tUserData = getUserDataByUserName($tUserName);

不好的例子(2): 

TestFunction( (($user_type > 100) || ( $param == 'name')) ? 888 : 999, getDataById()['dataList'][0]['user_name'], strtoupper(trim($t_company_name))); 

建议写法:

//用户类型数据, 如果用户类型是什么或者参数是什么就得的什么值
$t_user_type_data = (($user_type > 100) || ( $param == 'name')) ? 888 : 999;

//用户名
$t_user_name = getDataById()[0]['dataList'][0]['user_name'];

//大写公司名
$t_uppper_company_name = strtoupper(trim($company_name));

TestFunction($t_param_data, $t_user_name, $t_uppper_company_name);

 不好的例子(3):

 if(stristr($t_field_type, 'decimal')
       || stristr($t_field_type, 'float')
       || stristr($t_field_type, 'double')
       || stristr($t_field_type, 'number')
       || stristr($t_field_type, 'numeric')){

  //...
}

建议写法:

 //是小数吗
$t_is_float = stristr($t_field_type, 'decimal')
  || stristr($t_field_type, 'float')
  || stristr($t_field_type, 'double')
  || stristr($t_field_type, 'number')
  || stristr($t_field_type, 'numeric');

if($t_is_float){
    //...
}

 

4.变量命名适度复杂

除了循环变量i,j,k之类的,尽可能的长一点,取有意义的名字

好处:

  1. 避免变量不小心覆盖
  2. 以后见到变量名就知道是什么意思
  3. 搜索变量名能快速找到

  例如:

不建议的写法:( $sql 重名了)


$sql = 'UPDATE table_1 SET name='xxx' WHERE id = 888';

db()->execute($sql);

$sql = 'SELECT * FROM table_1 ';

db()->query($sql);

建议的写法:


$t_update_sql = 'UPDATE table_1 SET name='xxx' WHERE id = 888';

db()->execute($t_update_sql);

$t_data_sql = 'SELECT * FROM table_1 ';

db()->query($t_data_sql);

5.变量的命名(赋值)与使用尽可能靠近

理由:

(1) 防止中间被不小心重新赋值了

(2) 防止还要思考是什么意思


$t_param_type = $this->getParamType();
//...
//...
//...
//...
//...
//...
//...
//...
//...
//...
//...
//...
//...
//...
if('GOODS' == $t_param_type){
    //...
}

建议写法:

//...
//...
//...
//...
//...
//...
//...
//...
//...
//...
//...
//...
//...
//...
$t_param_type = $this->getParamType();
if('GOODS' == $t_param_type){
    //...
}

 

6.变量前缀建议:

本地变量(局部变量): t, 例如 t_user_id

   数组可以以arr_开头, 如 arr_users 

全局变量:g,例如 g_user_id

函数参数:v,例如 v_user_id

理由:一见到变量名,就知道从哪里来

 

7.与常量比较,常量在前

例如:

if(0 == $t_status){

}

理由: 防止误操作把==写成=

 

8.判断语句再简单也要把大括号加上

  例如:

 if($user_id == 88) incOrderNum(88);

 建议的写法:

if(88 == $t_user_id){
     incOrderNum(88);
}

理由:

防止后添加的语句不属于该判断条件

if($user_id == 88) incOrderNum(88); decWarehouseNum(88);

正确的写法: 

if(88 == $t_user_id){
     incOrderNum(88);
     decWarehouseNum(88);
}

9.函数前面添加注释

在函数定义前面,输入 /** 然后回车,phpstorm就会自动把注释模板创建好。

对程序员来说,写文档是不喜欢的,如果函数还不加注释,那就太给自己和别人挖坑了。

在复杂的逻辑前面,也要尽量加上注释。

理由:

好记性不如烂笔头。

 /**
     * 删除动态报表数据
     *
     * @param $report_id    :报表id
     * @param $v_pk_rows    :待删除的行
     * @param $check_online :检查是否在线
     *
     * @return array
     */
    public function delDynReportData(
        $report_id,
        $v_pk_rows,
        $check_online = true
    ) {

        ...
    }

10.避免拼写错误

       有些时候一个字符拼写错误,可能导致严重的后果,至少会给其他人造成困惑。

       特别是比如把字母l 写成1的。 一个变量名命名错误,其他人用正确的拼写就搜不到这个变量了。 

11.采用统一的代码缩进

       在phpstorm里面,点击菜单Code=>Reformat Code,就可以把代码的缩进整理得井井有条,清清爽爽。

猜你喜欢

转载自blog.csdn.net/wuzuyu365/article/details/106996031