日期:2014-05-17  浏览次数:20530 次

内部用Drupal/PHP开发规范1.2
前言
常言道,“没有规矩,不成方圆”。良好的编程风格与规范对开发者以及项目管理人员都是非常重要的。
当一个软件项目尝试着遵守公共一致的标准时,可以使参与项目的开发人员更容易了解项目中的代码、弄清程序的状况。使新的参与者可以很快的适应环境,防止部分参与者出于节省时间的需要,自创一套风格并养成终生的习惯,导致其它人在阅读时浪费过多的时间和精力。而且在一致的环境下,也可以减少编码出错的机会。缺陷是由于每个人的标准不同,所以需要一段时间来适应和改变自己的编码风格,暂时性的降底了工作效率。从使项目长远健康的发展以及后期更高的团队工作效率来考虑暂时的工作效率降低是值得的,也是必须要经过的一个过程。标准不是项目成功的关键,但可以帮助我们在团队协作中有更高的效率并且更加顺利的完成既定的任务。

第1章、排版规则

1.1、缩进
代码缩进使用2个空格,而不是tab键,因为在不同的编辑器查看代码时,tab键的显示出来的长度根是不一样的,虽然空格会增加文件的大小,这些误差是微不足道的。
在很多编辑器中,都可以设置将tab键设置为2个空格,如果你习惯使用tab键的话。

1.2、空格规则
空格应该在以下情况下使用:

   1. 关键字与(之间应该有1个空格,例:
      <?php
        while ($user->uid > 0) {
      ?>
   2. 函数名和(之间不应该有空格,例:
      <?php
        function arg() {
      ?>
   3. 一元操作符与其操作数之间不应该有空格,除非操作数是个单词,例:typeof。
   4. 每个在控制部分,例for语句中,“;”后必须跟一个空格。
   5. 每个,后应跟一个空格。

1.2.1、逻辑运算符前后都必须加空格,加一减一运算除外
<?php
  // 正确
  $a == $b;
  // 错误
  $a==$b;
  $a ==$b;
  // 正确
  $a++;
  $a--;
  // 错误
  $a ++;
  $a --;
?>



1.2.2、多个参数分隔时必须加空格
<?php
// 正确
  $a, $ab, $c;
  arg($a, $b, $c);
  // 错误
  $a,$ab,$c;
  arg($a,$b,$c);
?>



1.2.3、语法关键字后必须加空格
if, for, while, switch等关键字。
例:
<?php
  // 正确
  for ($a = 0;$ < 10; $a++);
  // 错误
  for($a = 0;$ < 10; $a++);
?>



1.3、字符串和变量的连接规则
字符串与变量连接使用“.”,且在“.”左右都有1个空格,使用"自动转义变量时必须在变量前后加“{}”
<?php
// 正确
  $result = 'file_' . $var;
  $result = 'file_{var}';
  // 错误
  $result = 'file_'.$var;
  $result = 'file_$var';
?>



1.4、每行一个语句,除非这些语句有很密切的联系,否则每行只写一个语句。用空行来将逻辑相关的语句分隔开以提高程序的可读性。
正确
<?php
  $node_types = node_get_types('types', NULL, TRUE);

  foreach ($node_types as $type => $info) {
    //
  }
?>


错误
<?php
  $node_types = node_get_types('types', NULL, TRUE);
  foreach ($node_types as $type => $info) {
    //
  }
?>



1.5、关键字
if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要有完整的括号{}
例:
正确
<?php
  if (NULL == $arg) {
    return;
  }
?>


错误
<?php
  if (NULL == $arg) return;
?>



1.5.1、if
格式如下:
<?php
  if (condition) {
    //
  }

  if (condition) {
    //
  } else {
  
  }

  if (condition) {
    //
  } else {
    //
  }
?>



1.5.2、for
格式如下:
<?php
  for ($i = 0; $i < 1; $i++) {
    //
  }
?>



1.5.3、do
格式如下:
不像其他复合语句,do语句总是以“;”结束。
<?php
  do {
    //
  } while (condition);
?>



1.5.4、do
格式如下:
<?php
  switch (expression) {
    case expression:
      statements;
    default:
      statements;
  }
?>


每一组statements(除了default,应以break、return或者t