学生导师互选系统(php代码规范)

学生导师互选系统(php代码规范)


php编码规范

组名:一不小心就火了

负责项目:学生导师互选系统(安卓端)

编写目的

为了更好的提高团队的的合作效率,保证开发的有效性和合理性,并可最大程度的提高程序代码的可读性和可重复利用性,指定此规范。

  • 参考资料
    • <<构建之法>>第四章节
    • PSR规范

代码风格规范

  • 代码必须遵循 PSR-1 中的编码规范 。

  • 代码必须使用4个空格符而不是 tab键 进行缩进。

  • 每行的字符数应该软性保持在80个之内, 理论上一定不可多于120个, 但一定不能有硬性限制。

  • 每个 namespace 命名空间声明语句和 use 声明语句块后面,必须插入一个空白行。

  • 类的开始花括号({)必须写在函数声明后自成一行,结束花括号(})也必须写在函数主体后自成一行。

  • 方法的开始花括号({)必须写在函数声明后自成一行,结束花括号(})也必须写在函数主体后自成一行。

  • 类的属性和方法必须添加访问修饰符(private、protected 以及 public), abstract 以及 final 必须声明在访问修饰符之前,而 static 必须声明在访问修饰符之后。

  • 控制结构的关键字后必须要有一个空格符,而调用方法或函数时则一定不能有。

  • 控制结构的开始花括号({)必须写在声明的同一行,而结束花括号(})必须写在主体后自成一行。

  • 控制结构的开始左括号后和结束右括号前,都一定不能有空格符。

基本代码规范

  • php标签

    php代码指定用长标签或者短标签,而不使用其他标签。

  • 字符编码

    php代码的编码格式指定只使用不带字节顺序标记(BOM)的UTF-8,以便与安卓端和数据库互连减少问题冲突

  • 从属效应(副作用)

    一份PHP文件中应该要不就只定义新的声明,如类、函数或常量等不产生从属效应的操作,要不就只有会产生从属效应的逻辑操作,但不该同时具有两者。

    “从属效应”(side effects)一词的意思是,仅仅通过包含文件,不直接声明类、 函数和常量等,而执行的逻辑操作。

    “从属效应”包含却不仅限于:生成输出、直接的 require 或 include、连接外部服务、修改 ini 配置、抛出错误或异常、修改全局或静态变量、读或写文件等。如下范例文件:

  <?php
  // 声明函数
  function foo()
  {
      // 函数主体部分
  }

  // 条件声明**不**属于从属效应
  if (! function_exists('bar')) {
      function bar()
      {
          // 函数主体部分
      }
  } 
  • 命名空间和类

    命名空间以及类的命名必须遵循 PSR-0.。

    类的命名必须遵循大写开头的驼峰命名规范,如class MyStudent{}。

  • 类的常量、属性和方法(包含所有的类、接口和可复用代码块(traits))

    • 常量类的常量中所有字母都必须大写,词间以下划线分隔。参考代码

      <?php
        
      class Foo
      {
          const VERSION = '1.0';
          const DATE_APPROVED = '2016-10-26';
      }
      
    • 类的属性统一采用小写开头的驼峰式命名规则,如:private studentNum

    • 方法名称必须符合小写开头的驼峰命名规范,如

      <?php
        
        class Student
        {
        		public function getNumber(){
                //
        		}
        } 
      
    • 扩展与继承

      关键词 extends 和 implements 必须写类名称的同一行,类开始的花括号必须独占一行,结束花括号必须在类主体后独占一行

      <?php
      class ClassName extends ParentClass implements \ArrayAccess, \Countable
      {
          // constants, properties, methods
      }
      
    • 方法及函数调用

      方法及函数调用时,方法名或函数名与参数左括号之间一定不能有空格,参数右括号前也 一定不能有空格。每个参数前一定不能有空格,但其后必须有一个空格。

      <?php
      bar();
      $foo->bar($arg1);
      Foo::bar($arg2, $arg3)
      
    • if 、 elseif 和 else

      标准的 if 结构如下代码所示,留意 括号、空格以及花括号的位置,
      注意 else 和 elseif 都与前面的结束花括号在同一行。

      <?php
      if ($expr1) {
          // if body
      } elseif ($expr2) {
          // elseif body
      } else {
          // else body;
      }
      
    • switch 和 case

      标准的 switch 结构如下代码所示,留意括号、空格以及花括号的位置。
      case 语句必须相对 switch 进行一次缩进,而 break 语句以及 case 内的其它语句都 必须 相对 case 进行一次缩进。
      如果存在非空的 case 直穿语句,主体里必须有类似 // no break 的注释。

      <?php
      switch ($expr) {
          case 0:
              echo 'First case, with a break';
              break;
          case 1:
              echo 'Second case, which falls through';
              // no break
          case 2:
          case 3:
          case 4:
              echo 'Third case, return instead of break';
              return;
          default:
              echo 'Default case';
              break;
      }
      

  • 注释,每个程序均必须提供必要的注释,书写注释要求规范。程序注释的原则如下:
    a. 注释中除了文件头的注释块外,其他地方都不使用//注释,而使用/* */的注释;
    b. 注释内容必须写在被注释对象的前面,不写在一行或者后面;

    • 写在类、方法和属性定义的前面
     /**
     * Super Class
     *
     * @package Package Name
     * @subpackage  Subpackage
     * @category    Category
     * @author  Author Name
     * @link    http://example.com
     */
     class SuperClass {
    
  • 对于执行数据库的sql语句操作,尽量不要在函数内写sql语句,而先用变量定义sql语句,然后在执行操作的函数中调用定义的变量

    $sql = "SELECT username,password,address,age,postcode FROM test_t ";
    $sql .= " WHERE username='aaa'";
    $res = mysql_query($sql);
    
  • 项目文件的目录结构,延续上一届的做法,不做特别的修改。

  • php项目开发中的程序逻辑结构

    对于PHP项目开发,尽量采用OOP的思想开发,尤其在PHP5以后,对于面向对象的开发功能大大提高。在PHP项目中,我们建议将独立的功能模块尽量写成函数调用,对应一整块业务逻辑,我们建议封装成类,既可以提高代码可读性,也可以提高代码重用性。比如,我们通常将对数据库的接口封装成数据库类,有利于平台的移植。重复的代码要做成公共的库。

写在最后

由于主要做的是数据处理部分的代码,就不结合html方面规范进行编写。本文只是做一下可能需要用的方面的

规范,还存在许多不足,在之后的编码过程中会为遇到规范问题进行补充。

posted @ 2016-10-29 01:19  mysteryH  阅读(479)  评论(1编辑  收藏  举报