开发规范

通用规范


1、文件编码统一UTF8不带BOM格式,换行统一使用LINUX的“\n”


2、命名要以字母开头,有意义并尽量简短:

  • 区分大小写(包括文件)的命名要使用驼峰式(camelCase)写法,只能包含数字和字母,只有特殊说明的才能包含”_”
  • 不区分大小写的命名只包含数字,小写字母,“_”和“-”
  • 常量必须只由大写字母和下划线(_)组成
  • 关键字与 true/false/null 必须小写

3、运算符前后都要有一个空格:

count += 2;
name = isMe ? 'Wade' : 'Other';

4、流程控制结构的基本规范如下:

  • 控制结构关键词后 必须 有一个空格。
  • 左括号 ( 后 一定不可 有空格。
  • 右括号 ) 前也 一定不可 有空格。
  • 右括号 ) 与开始花括号 { 间 必须 有一个空格。
  • 结构体主体 必须 要有一次缩进。
  • 结束花括号 } 必须 在结构体主体后单独成行。
  • 每个结构体的主体都 必须 被包含在成对的花括号之中,这能让结构体更加标准化,以及减少加入新行时,出错的可能性。

如:

if (expr1) {
    // if body
} else if (expr2) {
    // elseif body
} else {
    // else body;
}

while (expr) {
    // 结构体
}

do {
    // 结构体
} while (expr);

switch (expr) {
    case 0:
        // case 0
        break;
    case 1:
        // case 1
        // no break
    case 2:
    case 3:
    case 4:
        // case 1, 2, 3, 4
        return;
    default:
        // default case
        break;
}

for (i = 0; i < 10; i++) {
    // for 循环主体
}

try {
    // try 主体
} catch (FirstExceptionType e) {
    // catch 主体
} catch (OtherExceptionType e) {
    // catch 主体
}

5、方法定义和类定义,开始的左大括号与函数定义为同一行,中间加一个空格,不要另起一行:(注:不同于PSR-2规范)

while (true) {
    print('方法名调用后面无空格');
}

function demo(a, b, c) {    // "demo"与"("之间无空格, ","后有一个空格
    print('语法结构关键词后面有个空格');
}

class MyClass {
    // ...
}

6、命名要以字母开头,有意义并尽量简短:

  • 区分大小写(包括文件)的命名要使用驼峰式(camelCase)写法,只能包含数字和字母,只有特殊说明的才能包含”_”
  • 不区分大小写的命名只包含数字,小写字母,“_”和“-”
  • 常量必须只由大写字母和下划线(_)组成

7、语法分隔符只能是空格,缩进以四个空格为一单位


8、代码单行长度不能超过120字符,所有注释写在代码上方,从缩进位置开始书写


9、在符合语法规范的前提下,尽量减少文件行数,两段代码之间最多只能间隔一个空行,如:


10、注释全部是中文,多行注释要使用分类,以保证最高可读性,如:

// 单行注释

/** 至少包含描述和作者
 * 描述 : 主要说明
 *      换行起始位置
 * 参数 :
 *      参数 : 数组参数, 类JSON的写法, 增加了"..."和描述信息 {
 *          不带双引号的代表描述 : 此处描述值的信息 {
 *              "带双引号的代表固定键值" : 这是一个数组 [
 *                  "'...'代表同样的结构", ...
 *              ], ...
 *          }
 *      }
 * 返回 :
 *      返回数据, 结构同参数结构
 * 注明 : 特殊说明
 * 作者 : 开发人员
 */

 

php 规范


1、PHP代码文件必须以 <?php 或 <?= 标签开始,并且非嵌入式代码结尾禁止书写 ?>


2、使用一切所知的高效方式书写,减少服务器资源的利用,如

  • 常规字符串使用’而不使用” : echo ‘这样写法高效’
  • 能用 === 的判断不用 ==
  • 把引用传值的方式深入脑海:$index = &$str (由于写时复制机制,现应减少使用引用)

3、变量与字符串拼接:

echo "Hello {$name}, Today is {$date}!";

4、调用类方法和链式调用之间不能有空格,可以适当换行使结构更清晰:

$username = $this->getUserInfo($userId)['name'];

$this->log_model->key_log(
    self::LOG_NAME,
    $this->input->cookie('merchant_id'),
    __FILE__,
    array(
        'func' => __FUNCTION__,
        'req' => $reqObj,
        'resp' => $respObj,
        'ret' => $ret
    )
);

 

html 规范


1、含有非文本子标签的双标签要换行缩进,如

<div>
    纯文本
    <a>纯文本</a>
    <ul>
        <li>按着层级缩进</li>
        <li>按着层级缩进</li>
    </ul>
</div>

2、HTML中的样式尽量写在head标签或顶部,脚本尽量写在底部,以提高网页加载和渲染速度

 

css 规范


1、避免使用style标签或属性,全部写在样式文件中,以利用缓存提高速度


2、样式的命名要增加命名空间的概念,以”-”做标识,全局样式不包含”-”,以达到各样式之间互不干扰

.name_space-nav {
    color: red;
}

.file_space-nav { /* 尽量保证最多只包含一个"-" */
    color: blue;
}

3、不推荐#xx的ID选择器,禁止使用非常规标签名直接赋予样式,推荐.xx的类选择器,如:

#my-table { /* 不推荐 */
    background-color: yellow;
}

table { /* 禁止 */
    background-color: yellow;
}

.page-table { /* 推荐 */
    background-color: yellow;
}

 

js 规范


1、推荐将脚本写在单独的js中,避免直接写在script标签中

<script src="/xx/demo.js"></script><!--推荐-->

<script>
alert('无法使用缓存,又增加了页面的大小'); // 不推荐
</script>

2、….

SQL 规范


1、正确书写一条SQL语句,如

$sql = 'SELECT                                              /* 关键词要大写 */
    `demo`.test                                             /* 使用 ` 将表名包含 */
FROM                                                        /* 与开发语言缩进对齐 */
    `demo`                                  /* 演示表 */     /* 注释仅使用/**/, 并保证所有注释垂直对齐 */
        LEFT JOIN `left_join` ON                            /* 完整语法放在一行 */
            `left_join`.id = `demo`.id                      /* 一组语法内的表按顺序放在前面 */
        AND `left_join`.num = "1"                           /* 就算数字也要有引号包含 */
LIMIT                                                       /* 保持4个空格的缩进 */
    10, 20';

2、时刻防止SQL注入


3、SQL优化是重要的一块,如果一条效率低下SQL在运行,那么整站的效率都会降低

发表评论

电子邮件地址不会被公开。 必填项已用*标注