澳客网开发编码约定

来源:互联网 发布:silverlight.js下载 编辑:程序博客网 时间:2024/05/16 09:43

/ **

* 版权所有 (C) 2004 北京西线传媒科技有限公司

* 作者:刘振飞 liuzf@pku.org.cn; 王春生 wwccss@263.net

* 出品:北京西线传媒科技有限公司技术部 http://www.okooo.com

*

 * 这一程序是自由软件,你可以遵照自由软件基金会出版的GNU通用公共许可证条款来修

 * 改和重新发布这一程序。或者用许可证的第二版,或者 (根据你的选择)用任何更新的

 * 版本。

 *

 * 发布这一程序的目的是希望它有用,但没有任何担保。甚至没有适合特定目的的隐含的

 * 担保。更详细的情况请参阅GNU通用公共许可证。

 *

 * 你应该已经和程序一起收到一份GNU通用公共许可证的副本。如果还没有,写信给:

 *      The Free Software FoundationInc.

 *      675 Mass Ave

 *      Cambridge MAO2139USA

 * 还应加上如何和你保持联系的信息。

 *

 * 参考文档:http://www.w3cn.org/article/step/2004/26.html,对原作者表示感谢。

 *

 * 欢迎访问“西线传媒自由软件园地”:http://www.okooo.com/OpenSource/,我们会在这里陆续发布有用的自由软件。

 */

 

一、文件结构:

整个网站目录结构如下:(颜色示例:一级目录 二级目录 三级目录 四级目录)

/ 根目录(比如:/home/www/,可能会有所变化。)

|--- Documents(存放开发文档文件)

|--- Include(存放包含文件)

|--- Class(放置类定义文件,每一个类单独一个文件来定义。)

   |--- ClassFile1

   |--- ClassFile2

   |--- …………

 

|--- Config.inc.php  存储系统参数设置信息。

|--- Functions.inc.php  公用函数库文件。

|---- OtherFunction.inc.php 其他特定应用的函数库文件。根据实际情况命名。

|--- Setup.inc.php 参数变量初始化文件。其他的程序直接包含这个文件即可。

|--- Html

   |--- Images(存放网站图片文件,并根据栏目的名称建立相应的子目录。)

   |--- ChannelName1(存放ChannelName1栏目的图片文件)

       |--- ChannelName2

|--- CSS (存放网站样式表文件)

|--- Include (存放网页中需要包含的文件,比如JS教本等等。)

|--- ChannelName1 (存放ChannelName1栏目的程序文件。)

|----ChannelName2

|--- …………

|--- Admin(存放整个网站的管理程序。这个目录需要通过各种方法来加以保护。)

   |-- -Cache(Smarty模板生成的Cache文件,目录权限需要Other可写。)

   |--- Compile(Smarty模板生成的编译教本,目录权限需要Other可写。)

   |--- Smarty(存放Smarty类文件)

   |--- Pear(存放Pear类文件,可选。因为系统本身已有Pear.)

   |--- Templats(存放Smarty模板文件,其目录结构与Html目录结构对应。)

   |--- Images(存放网站图片文件,并根据栏目的名称建立相应的子目录。)

   |--- ChannelName1(存放ChannelName1栏目的图片文件)

       |--- ChannelName2

|--- CSS (存放网站样式表文件)

|--- Include (存放网页中需要包含的文件,比如JS教本等等。)

|--- ChannelName1 (存放ChannelName1栏目的程序文件。)

|----ChannelName2

|--- …………

 

二、目录、文件命名约定:

目录、文件命名一律采用英文,,长度一般不超过20个字符,采用大小写结合的命名方式。除特殊情况才使用中文拼音。比如:Images,GetUserName.php ChangePassword.php

三、PHP脚本文件的组成部分:

每个文档按照以下顺序排列:文档说明部分、包含文件部分、变量声明、初始化部分、自定义函数部分和具体的语句。

3.1文档说明部分

在每一个文档的开头部分,要包含这个文档的编号,简要说明以及作者和最后修改时间。注释采用phpDocument的注释方式。

 

<?

/**

 * Okoo.com网站首页(简单注释)

 *

 * 此文件提供了网站所应用到的共用函数文件(详细说明)。

 * @file        $Source$

 * @package     Index(属于哪一个模块,可以根据程序的功能加以划分。)

 * @author      王春生 <wwccss@263.net>

 * @version     $Id$

 */

?>

 

如果页面是纯网页页面,则可以通过以下形式来说明:注意是以HTML的注释语句开始的。

<!--

/**

 * 网站首页(简单注释)

 *

 * 此文件提供了网站所应用到的共用函数文件(详细说明)。

 * @file        $Source$
 * @package     Index

 * @author      王春生<wwccss@263.net>

 * @version     $Id$

 */

-->

其中的$Id$cvs checkout后会被cvs自动替换成文件基本信息,其中包含文件名、日期、修改者等cvs信息

 

3.2包含文件部分:

在每个文档的开头部分包含此文档所用到的包含文件。

比如:include(“Setup.inc.php”);

注:如果用到session则需要将session_start()函数放到文档的第一句。

3.3变量说明部分:

如果有变量需要特别声明,则在此给出。可以通过注释语句的方式来加以说明。比如:

//UserName 当前登陆用户的用户名。

3.4自定义函数部分:

如果当前PHP脚本需要定义一个函数,则在此声明。凡有两个以上文档用到的函数,则放到公共函数库文件里面,即/Include/Functions.inc.php文件中。

自定义函数需包含以下几个部分:函数功能描述、函数变量说明、返回值说明。

示例:

<?

/**

  * 数据库连接函数(简单说明)

  *

  * 通过这个函数链接到数据库,并返回相信的链接标识符。(详细的说明)

  * @author 王春生

  * @version 1.0

  * @global string             数据库服务器(全局变量声明,无需指定变量命,顺序对应)

  * @global string             数据库用户名

  * @global string             数据库密码

  * @global string             要使用的数据库

  * @param string $SQL        连接成功以后执行的查询语句,默认为空。(变量声明)

  * @return array              返回数据库连接信息。(返回值说明)

  */

  function dbConnect ($SQL="")

  {

    global $DbHost,$DbUser,$DbUserPWD,$DbDatabase; 

    $ConnInfo = array(); //存储连接信息

    $LinkID = mysql_connect($DbHost,$DbUser,$DbUserPWD);  //连接到数据库,返回连接ID

    mysql_select_db($DbDatabase);               //选择数据库

    $ResultID = mysql_query($SQL,$LinkID);      //返回查询结果ID

    $ConnInfo["LinkID"] = $LinkID;              //将两个ID存到数组$ConnInfo

    $ConnInfo["ResultID"] = $ResultID;

    return $ConnInfo;                           //返回数组$ConnInfo

  }

?>

 

3.5文件结尾部分:

在所有文本文件(phphtm)的最后必须写如下注释:

php:

<?

/**

 * $Log$

 */

?>

 

htm:

<!--

/**

 * $Log$

 */

-->

此注释在cvs checkout后会被cvs自动替换成文件修改记录。

四、程序注释约定:

文档和函数的说明采用phpdocument 的形式

模块说明采用句上注释的形式。每条语句的说明采用句左注释的方式。

文件声明与函数的注释请参照上面的格式。

下面是类文件的注释格式。

<?php

/**

 * 数据记录分页显示类。(对整个类文件的简单说明)

 *

 * 一个关于数据分页显示的类,可以通过下拉列表来选择页面。(详细的说明)

 * @package     Include  (所属的模块名称)

 * @author      王春生 <wwccss@263.net>

 * @version     $ID 2003-12-6 21:30 $

 */

  class Page

  {

    /**

     * 记录总数。(对类属性的声明。)

     * @var int

     */

     var $RecTotal;

 

    /**

     * 每页显示记录数。

     * @var int

     */

     var $RecPerPage;

 

/**

     * 取得某一条件查询结果的记录总数。(对类方法的说明,与对函数的说明相同)

   *

     * @global object $DB        数据库链接信息。

     */

     function GetRecTotal()

     {

    global $Mysql;

    …………

      }`

 

五、PHP语句书写格式约定:

if $UserName = = “xxx” and $Password = = “xxx”

{

   echo “你好

}

else

{

  echo “呵呵”;

}

 

大括号分成两列书写,理由是可以方便的界定大括号的范围。

缩进采用四个空格,不使用Tab键进行缩进。

函数名称与参数之间用空格格开。比如:$LinkID = mysql_connect( $UserName,$Host )

 

 

六、PHP变量的命名方式遵循下面几个原则:

(1)  大小写混合:采用大小写混合的形式来加以区分。比如:UserName

(2)  如果有单词缩写,则采用大写形式。如:SQL 。同时应该避免大写的单词在一起,比如IMGFile,无法直接判断单词的分割,则应该写成ImgFile。类的命名与变量命名类似,也采用大小写混合的方式。类的属性采用_开始,比如$Object->_Var1

 

七、PHP函数命名约定:

采用动词加名词的形式,动词小写,后面的名次用大小写间隔。如果需要,可以增加小写的前缀,这时动词则大写开始。比如:

没有前缀的情况:getUserName

有前缀的情况:sysGetUserName

八、数据库变字段命名约定:

(1)数据库、表、字段的命名与PHP变量命名相同,采用大小写混合的方式,比如:
Database:Okooo

Table :UserList

Field :UserName,UserPassword,BirthDate……     

2SQL 查询语句中关键词使用大写。 比如:SELECT * FROM UserList WHERE ……

3)模块说明文档中如果有数据库的定义,请按照如下格式:

模块名称(:用户表) 表名(UserList)

表的说明:系统用户表

序号

字段名

字段描述

字段类型、大小

为空

默认值

键名

索引

1

ScholarID

学者编号

SmallInt Unsigned

Not

自增

Y

Y

2

ScholarName

学者姓名

VarChar(20)

Not

 

N

Y

3

SortID

排列顺序

TinyInt Unsigned

Not

1

 

 

4

ScholarIntro

学者简介

Text

Not

 

N

Y

5

Images

学者图片

VarChar(79)

 

 

 

 

6

AddUaser

添加者

VarChar(30)

Not

 

 

 

7

UpdateDate

最后更新时间

DateTime

0

 

 

 

备注:对某些字段的说明。或者自己的设计思想。

如果数据库后期有改动,文档上应随之改动,保持同步。

 

九、CVS操作约定:

(1)  文件前和文件后加上$Id$$Log$ CVS tag,详见“三、PHP脚本文件的组成部分”部分。

(2)  CVS checkin的时候一定要写注释,注释的内容必须是此版本的修改信息,比如:

 + 增加用户名校验

 * 修正了密码bug

 - 去掉了abcde函数

详细说明如下:

1)     改动用符号标出来,“+”表示新增功能,“*”表示修改功能,“-”表示删除的功能;

2)     每个改动占一行;

3)     符号(“+”、“-”和“*”)前后各有一个空格。

 

十、XHTML代码规范

10.1 样式表的引用

样式表通过外部引用的方式调用,不建议在页面中新定义样式。

页面元素中的展现形式不建议通过html代码进行定义,都统一使用样式表进行。

比如要显示红色字体,用Html代码可以这样进行定义:

<font clolor=”red”>红色字体</font>

但最好的方法是通过样式表来定义。

<span class=”RedText”>红色字段</font>

这样可以将对网站样式的定义集中到一个样式表文件中去,如果对网站进行修改,可以很快进行。而如果分散到各个网页文件中去,改动起来就非常麻烦了。

10.2 缩进、换行约定

网页代码的缩进使用两个空格。

因为网页嵌套标签可能比较多,所以使用四个空格进行缩进会导致最深层的代码缩进太多,因而使用两个空格进行缩进。

如果一行中代码太长,请换行。

比如这样一行代码

<tr><td><input type=”text” name=”test” value=”test” class=”MyInput” onclick=”alert(‘test’)”></td></tr>

可以改成

<tr>

<td>

<input type=”text” name=”test” value=”test” class=”MyInput” onclick=”alert(‘test’)”>

</td>

</tr>

如果多行相似的代码出现,属性尽量对齐

比如

<input type="hidden" name="ProjectID"    value="{$ProjectID}">

<input type="hidden" name="ModuleID"    value="{$ModuleID}">

<input type="hidden" name="BugID"       value="{$BugID}">

<input type="hidden" name="AssignedTo"   value="{$AssignedTo}">

typenamevalue属性对齐以后阅读起来比较方便。

对于某种标记的多个属性,其顺序尽量保持一致。

比如table标记的定义可以按照下面的顺序来定义。

<table width="90%" align="center" border="0" cellpadding="1" cellspacing="0" class="BgTable">

 

 

10.3 书写规范

10.3.1 所有的标记都必须要有一个相应的结束标记

 

       以前在HTML中,你可以打开许多标签,例如<p><li>而不一定写对应的</p></li>来关闭它们。但在XHTML中这是不合法的。XHTML要求有严谨的结构,所有标签必须关闭。如果是单独不成对的标签,在标签最后加一个"/"来关闭它。例如:<br /><img height="80" alt="网页设计师" src="../images/logo_w3cn_200x80.gif" width="200" />

 

10.3.2 所有标签的元素和属性的名字都必须使用小写

 

  与HTML不一样,XHTML对大小写是敏感的,<title><TITLE>是不同的标签。XHTML要求所有的标签和属性的名字都必须使用小写。例如:<BODY>必须写成<body> 。大小写夹杂也是不被认可的,通常dreamweaver自动生成的属性名字"onMouseOver"也必须修改成"onmouseover"

 

10.3.3 所有的标记都必须合理嵌套

 

10.3.4 所有的属性必须用引号""括起来

 

HTML中,你可以不需要给属性值加引号,但是在XHTML中,它们必须被加引号。

 

10.3.5 给所有属性赋一个值

 

XHTML规定所有属性都必须有一个值,没有值的就重复本身。例如:

<td nowrap> <input type="checkbox" name="shirt" value="medium" checked>

  必须修改为:

<td nowrap="nowrap">

<input type="checkbox" name="shirt" value="medium" checked="checked">

</td>

10.4 表单变量命名约定

       表单中的变量命名采用PHP的命名方式,使用大小写间隔。比如:

       <form name=”LoginForm”>

         <input type=”text”     name=”UserName”  value=””>

         <input type=”password” name=”Password”   value=””>

</form>

10.5 参考资料

网页设计师:http://www.w3cn.org/article/step/2004/26.html

十一、JavaScript 代码规范

11.1 目录文件结构

网站所有公用的JS脚本都放到Html/JS目录下面,按照类别进行命名,文件名沿用PHP文件的命名方式,采用大小写间隔的形式进行:比如FunctionsMain.js.

如果是第三方的脚本程序,则保持原来的命名不变。

11.2 变量命名约定

由于JavaScript区分大小写,所以对变量进行命名的时候需要谨慎。同时为了与php程序保持统一,JavaScript的变量命名也采用大小写间隔的形式。

如果JavaScript变量不参与与服务器的交互,(即此变量不向服务器进行传递)也可以在前面增加前缀,常见前缀见下表。

变量命名的标识符:

类型

前缀

举例

布尔型

bln

blnFinished

字节型

byt

bytLetter

日期型

dtm

dtmBirthday

双精度型

dbl

dblResult

错误信息

err

errBadInput

整型

int

intBeens

长整型

lng

lngDistance

对象

obj

objFirst

单精度整数

sng

sngBalance

字符串

str

strUserName

对象命名标识符

对象名称

前缀

举例

复选框

chk

chkToToMatch

列表框

lst

lstProvince

文本框

txt

txtUserName

按钮

btn

BtnVote

 

11.3 函数命名、注释约定

11.3.1 函数命名采用动词+名词的形式,第一项首字母小写。也可以增加前缀。

比如:function checkUserName()

增加前缀的命名可以为:function sysCheckUserName()

11.3.2 函数的注释沿用phpDoc的标准。

    比如:

/**

 * Displays an confirmation box beforme to submit a "DROP/DELETE/ALTER" query.

 * This function is called while clicking links

 *

 * @author                        wangcs<wwccss@263.net>

 * @param   object   strLink       the link

 * @param   object   strSqlQuery   the sql query to submit

 * @return   boolean               whether to run the query or not

 */

function confirmLink(strLink, strSqlQuery)

{

}

 

 

11.4 代码书写规范

11.4.1 缩进约定:缩进采用四个空格进行缩进。

11.4.2 每一行都以”;”结束。

11.4.3 循环、逻辑判断中大括号都单独占一行。

11.4.4 相邻几行代码中相似的部分尽量对齐。

比如:

/**

 * 动态显示表格。

 *

 * @author                 王春生 <wwccss@263.net>

 * @param  int ID           表格编号。

 * @param  int TotalCount   表格总数。

 */

function showTable(ID,TotalCount)

{

    for (I = 1; I <= TotalCount; I++)

    {

        if (I == ID)

        {

            document.all["Table" + I].style.display = "";

        }

        else

        {

            document.all["Table" + I].style.display = "none";

        }

    }

}

 

11.5 参考资料

11.5.1《看实例学习VBScript

11.5.2PhpMyAdmin中的JS脚本。

11.5.3. TreeMenu中的JS脚本。

十二、修改记录

12.1 2004-2-18修改记录:(ChangeLog)

1、  修改缩进为四个空格。

2、 增加数据库定义格式。

12.2 2004-3-11修改记录:

 

3、  修改了PHP文档的组成部分,增加了CVS tag$Id$$Log$

4、  增加了CVS操作约定。

12.3 2004-6-17修改记录:

6.3类的属性采用下划线开始。

7           修改PHP函数命名的约定。

12.4 2004-11-16修改记录:

将此文档的组织方式改为大纲方式。

增加XHTMl的代码规范。

增加JavaScript代码规范。


原创粉丝点击