点滴记忆---观雨亭
EMLOG开发人员编码规范 [转]
2014-6-17 eehello

原文链接:http://wiki.emlog.net/doku.php?id=coding

EMLOG开发人员编码规范

如果您已经决定向emlog贡献代码,请详细阅读以下规范,并严格遵守。这样在保证您代码可读性的同时还可以大大减少我们的工作量。

文件编码

emlog的所有php核心代码以及模板、插件文件均采用UTF-8编码。请调整您的编辑器文件编码为UTF-8,并关闭UTF-8 BOM的功能。请不要使用windows自带的记事本编辑项目文件。

缩进

emlog项目中的代码缩进使用的是4个空格(space),而不是制表符(tab),需每个参与项目的开发人员在编辑器(Zend Studio、UltraEdit、EditPlus 等)中进行强制设定,以防在编写代码时遗忘而造成格式上的不规范。

换行

emlog使用UNIX风格的换行符,即只有换行(LF或”\n”)没有回车(CR或”\r”),请在你的编辑器内调整

文件命名

文件名统一使用小写,如文件名由多个单词组成,用下划线或点分割,文件命要有意义。

函数库文件 以 function. 开头 如:function.base.php
类文件 以 class. 开头 如:class.mysql.php

 

类命名

首字母大写(包含各组合单词),专有名词保持其默认大小写规范。

class MakeCache{

 

函数命名

首字母小写,其他组合单词首字母大写

function viewCount() {

}

 

变量命名

首字母小写,其他组合单词首字母大写

$callbackFunctions;
 

常量命名

所有字母大写,单词之间用下划线分割

define('EMLOG_ROOT', dirname(__FILE__));
 

注释

注释是开源项目的重点,请务必重视。

头部注释

头部注释主要用来阐述此文件的用途、版权、版本。请按照下列形式书写(你可以把它设置为代码模板)。

<?php
/**
 * 前端全局项加载主程序
 * @copyright (c) 2008, Emlog All Rights Reserved
 * @version emlog-2.7.0
 * $Id: common.php 585 2008-07-30 14:51:59Z emloog $
 */

 

2.7.0 为当前emlog的版本号其中$Id 是为了匹配svn的关键字,设置此文件的svn:keywords属性为id,每次提交以后,$Id$就会被替换为具体的版本信息

类注释

一个类在声明的时候必须声明其作用。

/**
 * MYSQL数据操方法封装类
 * 
 */

class MySql {

……

}

 

函数注释

函数的声明注释参考phpdoc规范。说明函数的作用各个参数的数据类型以及说明返回值的数据类型以及说明,如果是无返回函数,必须指明@return void

 

/**
 * 加载模板文件
 *
 * @param string $template 模板名
 * @param string $EXT 模板后缀名
 * @return string 模板路径
 */
function getViews($template,$EXT=".php"){
global $em_tpldir;
if (!$template){
$template = 'none';
}
$path=$em_tpldir.'/'.$template.$EXT;
return $path;
}

 

大括号{}、if和switch

以下是符合上述规范的例子:

 

if($condition){
switch($var) {
case 1:  echo ‘var is 1’; break;
case 2:  echo ‘var is 2’; break;
default:  echo ‘var is neither 1 or 2’; break;
}
} else {
Switch($str) {
case ‘abc’:
$result = ‘abc’;
break;
default:
$result = ‘unknown’;
break;
}
}

 

运算符、小括号、空格、关键词

根据上述原则,以下举例说明正确的书写格式:

$result = (($a + 1) * 3 / 2 + $num)).’Test’;
$condition ? func1($var) : $func2($var); 
$condition ? $long_statement
: $another_long_statement;
if($flag) {

    //Statements(more than 15 lines)

}
 

字符串的单引号和双引号

纯字符串、关联数组索引(key)使用用单引号''

$myString = 'hello world';
$log = $row['blog'];

 

 

只要在字符串中包含转义字符,变量 等复杂情况使用双引号

$myStr = "hello \n $body";

 

函数定义

/**
 * 日志分割
 *
 * @param string $content 日志内容
 * @param int $lid 日志id
 * @return unknown
 */
function breakLog($content,$lid){
 $a = explode("",$content,2);
 if(!empty($a[1]))
  $a[0].='<p><a href="./?action=showlog&gid='.$lid.'">阅读全文&gt;&gt;</a></p>';
 return $a[0];
}

 

 

发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容