命名定义
局部变量命名
使用英文名词,动词,以大写字母作为单词的分隔,其他字母均使用小写,不适用下划线
$testTask=’’; $deleuCount=0;
全局常量命名
使用英文名词,动词,所有字母都使用大写,以下划线分隔每个单词
define( ‘WEBSITE_NAME’, ‘名称’ ); define( ‘WEBSITE_URL’, ‘地址’ )
数组变量
使用英文名词,动词,以大写字母作为单词的分隔,其他的字母均是小写,不适用下划线,以字符串Array作为后缀
$scopeArray = array(); $bookIdArray = array();
静态变量命名
使用英文名词,动词,以大写字母作为单词的分隔,其他的字母均是小写,不适用下划线,以字符串Static作为后缀
static $fileArrayStatic = ‘’; static $fileNumStatic = ‘’;
对象变量命名
使用类名称为变量前缀,所有字母都使用大写,以字符串_OBJECT作为后缀,
$USERACCOUNT_OBJECT = new UserAccount(); $PAINTINGORDER_OBJECT = new PaintingOrder();
类命名
使用英文名字,以大写字母作为词的分隔,其他的字母均为小写,名词的首个字母大写,不适用下划线
class UserAccount{} class PaintingOrder{}
方法命名
使用英文名词,动词,以大写字母作为词的分隔,其他的字母均为小写,不适用下划线
function isAccountOk() function addAccount()
方法中参数的命名
使用英文名词,动词,以大写字母作为词的分隔,其他的字母均为小写,不适用下划线
$this->accountName = $accountName;
类属性命名
使用英文名词,动词,以大写字母作为词的分隔,其他的字母均为小写,不使用下划线,对于类属性为某个对象变量,则以字符串Object为后缀,
var $tableName = ‘’; var $databaseObject = ‘’;
语法书写
大括号{}规则
将大括号放置在关键词下方的同列处,
if ( $condition )
{
…
}
代码缩进规则,tab键,或者四个空格
小括号规则,小括号内,关键字,参数,方法名,用空格分隔
if else , 最好有一个else 处理未处理到的情况,即使处理语句只有一个,也是用{}
switch规则,每个case块结束处必须加上break,而default总应该存在处理未知情况,例:
声明定位规则 ,声明代码块需要对齐,且初次使用变量时需要初始化
其他
所有类方法必须有返回值,除结果简单外返回true或者false之外,其它方法应返回不同的值。
以交作流程进一步处理。
html的form表单统一不设置submit按钮的名称属性(name)。
html的form表单各个元素名称与数据库字段保持一致。
每行一个语句。
不要采用默认方法测试非零值,必须显式测试,
if ( false != $this->IsAccountOk() )
不要使用三元逻辑符 ? :,但对变量的赋值除外,
统一使用<?php ?>,禁止使用<? ?>格式。
对于get、post、session类型变量,必须使用$_GET、$_POST、$_SESSION方式定义和调用。
尽可能使用单引号’’而不是双引号’’。
使用完毕后的数组变量、对象变量、查询集合必须马上使用unset()、free_result()释放资源。
一个php文件只能包含一个类定义编码,以类名称作为文件名称。
php文件中绝不能出现html语句,html文件中尽可能避免出现php语句。
html文件必须通过w3c的html4检测认证(http://validator.w3.org/)。
如果发觉您在程序中的命名只有少量能和其对应事物相匹配的话,请重新设计系统。
在为类命名前首先要知道它是什么。如果通过类名提供的线索,您还是想不起这个类是什么的话,那么您的设计是做得不够好。
超过三个单词组成的混合名是容易造成系统各个实体间的混淆,请重新设计类。
通常每个方法只执行一项逻辑动作事务,所以对它们的命名应该清楚的说明它们是做什么的:用checkForErrors()代替errorCheck(),用dumpDataToFile()代替dataFile()。
这么做使功能和数据成为更可区分的物体。
程序注释
/*
* Purpose:
* 作为通用接口访问数据库的类
* Class Name:
* Database
* Author:
* unixdotnetphpboke@163.com
* Modifications:
* 2004-08-18 09:15
* 添加db_insert_id()方法
* unixdotnetphpboke@163.com
* See: 参照说明
*/
class Database
{
……
}
/*
* Purpose:
* 取得上一步数据库insert操作产生的id
* Method Name:
* getInsertId()
* Parameter:
* Return:
* int
* Author:
* unixdotnet phpboke@163.com
* Modifications:
* 2004-08-18 09:15
* 修改原因
* unixdotnet phpboke@163.com
* See: 参照说明
*/
function getInsertId()
{
...
}
class Database
{
/*
* Purpose:
* 连接数据库所需的用户名
* Attribute Name:
* $databaseUserName
* Type: string
* Author:
* unixdotnet phpboke@163.com
* Modifications:
* 2004-08-18 09:15
* 修改原因
* unixdotnet phpboke@163.com
* See: 参照说明
*/
var $databaseUserName;
...
}
数据库应用
数据库的设计必须符合三个范式(极端要求常用高速时考虑单独设置记录表除外)。
数据库名称应该由概述项目内容的小写英文名词组成。
数据表名称应该由物件对象名称的小写英文名词组成(尽可能对应系统中的业务类名称)。
以下划线分隔单词,避免跨平台时可能出现的大小写错误。
数据表的字段应避免使用varchar、text等不定长的类型,时间信息的字段使用unix tiemstamp类型存储。
查询数据时禁止使用*通配符避免占用资源加速处理速度,尽量避免使用临时表。
查询数据连接多表时各资源应该使用全名称,即tableName.fieldName,而不是fieldName。
SQL语句应尽可能符合ansi92标准,避免使用特定数据库对SQL语言的扩充特性。
开发结束后,必须针对SQL查询语句的条件语句部分(where)添加索引,须匹配多个条件的应该使用聚合索引。
索引的组成应由左至右匹配条件语句的顺序。
严禁盲目添加索引,避免减慢数据插入的速度、增大占用空间及减慢查询速度。
每当数据库(表)发生结构性变化时须登记保存;日常须定时(不超过三个工作日)备份数据库结构及其数据。
1.给php变量赋值为字符串,尽量用单引号。单引号速度要快很多。
2.给php变量赋值时,值中带变量,就的用双引号了,双引号能自动解析变量,方便很多。
如$b=blue; $a=”php$b”; echo $a;输出phpblue (单双引号各有千秋啊)
3. html内尽量用双引号,无论多长拿到php中首尾加单引号就行,甭怕错。