• (转)详解PHP编码规范文档


    使用驼峰结构命名,即以小写字母开头,从第二个单词开始,每个单词的第一个字母大写。

    大半天时间整理的PHP编码规范…

    一、命名规范:

    1. 常量的命名

    1) 字母,全部大写,使用“_” 分隔单词。

    如:DEFINE(“PHP_DEMO_PRINT”,”hEllo world”);

    2. 变量的命名

    1) 使用驼峰结构命名,即以小写字母开头,从第二个单词开始,每个单词的第一个字母大写。

    如:$getElement=”myodbc”;

    2) 全局变量以“g_”开头,非全局变量不要以“g_”开头

    如:$g_i;

    3) 所有的“临时”变量使用完毕后必须unset。

    4) 不允许出现字母完全相同,仅大小写不同的命名。

    5) 不允许在命名的结尾使用下划线。

    6) 不要出现单字母的变量,如i,j,k(只有在控制循环数时且循环代码条数在3条以内,才可以考虑使用)

    7) 变量名中不能出现数字。

    8) 变量名最好能表示出是数值型还是字符串型变量。

    如:$myCount_i表示数值型变量,$myString_s表示字符串。

    9) 如果有计算限定符,把限定词加到名字的最后。

    如:$calTimeStart 、 $calTimeEnd.

    3. 函数的命名

    1) 函数名全部小写,单词之间可以使用下划线。

    2) 存取对象的函数名使用 set_xxx() 和get_xxx() 形式。

    3) 布尔类型的函数名可以使用 isxxx() 形式。

    4) 函数名中不能出现数字。

    4. 类命名

    1) 类名用第一个字母大写的英文正常语序准确描述类的含义。如:Employee。

    2) 类的方法命名规则与函数的命名规则一致。

    3) 类的属性名采用全字母小写。

    5. 文件的命名

    1) 文件名字符全部采用小写

    2) 文件名称要能反映出其内容及功能。

    如:储存有类的文件,name.class.php;存有函数的文件可采用name.func.php或name.inc.php来命名;配置文件,name.cfg.php或者config.inc.php 。

    二、注释规范:

    1. 变量的注释

    1) 变量的同行后空一格使用双斜线注释。

    如:$myDemo = ’a demo’; //这是行内注释

    2. 函数与函数体的注释

    /*

    @作者:xxxx、bbb

    */

    //描述函数的功能和返回值和引用方法

    function  ff(aaa, bbb)  {

    ……

    // 普通夹杂在代码里的单行注释

    ……

    return false;

    }

    3. 文件的注释

    1) 文件功能、创建人信息、时间。

    2) 已知的Bug。当然最好是修正所有错误,但可能暂时还没有办法修正错误,或暂时没有精力去修改

    3) 开发和维护文件的历史列表。记录每一次修改的作者、日期、修改的内容

    4) 对主要的算法必须加以解释说明,主要的流程必须给出引导性的说明

    5) 标准格式

    /**

    * @description 描述类的功能、用途、现存BUG,设计方法。

    * @author 作者姓名

    * @version 最后修改日期(日期格式建议采用:年-月-日格式,例如:2008-04-05)

    */

    如果对已经版本化的类进行了修改,需要按照如下格式为每一次修改附加修改历史记录: 

    * @modify

    * 修改人 + 修改日期(日期格式建议采用:年-月-日格式,例如:2008-04-05)

    * 修改说明

    三、代码书写风格

    1. 总原则

    1) 一行代码尽量简短,并且保证一行代码只做一件事。

    2) 使用圆括号来界定操作的顺序。不要让别人判断复杂的操作优先级。

    3) 合理使用空行,划分逻辑处理。

    4) 代码缩进使用TAB键(设定四个空格)。

    5) 建议遵循三十秒原则。如果另一个程序员无法在三十秒之内了解你的函数做了什么,如何做以及为什么要这样做,那就说明你的代码是难于维护的,必须得到提高。

    2. 控制结构

    1) If 规范: 

    1. else 后面的if,另起一行 

    2. 把对比常量,放在等式左边 

    3. 分支要加上注释,注释前面加一个(TAB)缩进

    if (6 == $errorNum)  { //注释1

    ..

    }  else  {

    if (5 == $num)  { //注释2

    }  else  {

    }

    }

    2) Switch规范: 

    switch (…) {

    case 1: //分支1注释

    …   

    // 这里没有break,直接转到下个case,须要加注释   

    case 2:  {  //分支2注释  

    $v = get_week_number(); // 创立变量,在{}之中   

    …  

    }    

    break;    

    default:  

    }

    3) For规范: 

    For($i=1;$i<=3;$i++)  {

    ……

    }

    4) While 规范: 

    While ($i<=5) {

    ….

    }

    5) Foreach  规范: 

    Foreach ($arr  as  $v => $k)  {

    ….

    }

    四、代码书写风格

    1. 使用$row[‘id’]方式取数据,不要使用$row[id]方式。

    2. 纯字符串使用单引号包含。

    3. 删除未使用的变量

    4. 执行for循环之前确定最大循环数,不要每循环一次都计算最大值。

    5. 循环内部不要声明变量,尤其是大变量:对象(语言通用)。

    6. 执行字符串替换前用strpos()函数判断是否存在后再执行替换函数。

    7. 用foreach代替while遍历数组。遍历数组时foreach的效率明显高于while循环

    8. str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍

    9. 当执行变量$i的递增或递减时,$i++会比++$i慢一些。这种差异是PHP特有的

    10. 用@屏蔽错误消息的做法非常低效。

  • 相关阅读:
    ubuntu14.04 Cannot find OpenSSL's <evp.h>
    git 常用命令
    Python3常用模块的安装
    Centos7 安装配置优化mysql(mariadb分支)
    Centos7 编译安装python3
    Centos6.5搭建git远程仓库
    年轻
    springboot 报错Field XXX required a bean of type XXX that could not be found.
    springboot 启动报错[classpath:/application.yml] but snakeyaml was not found on the classpath
    idea 使用点击maven clean/install或maven其他命令失败,显示:乱码+archetypeCatalog=internal
  • 原文地址:https://www.cnblogs.com/fxlttkl/p/7271453.html
Copyright © 2020-2023  润新知