/**********************************最近被命名弄得烦死了,找了个文章给大家分享一下,提升一下命名的知识*************************************/
对于大家均熟知的应用,也可采用一些更简单易记的缩写方式,比如redirectUrl(得到应该跳转到的地址),可以简写成g(),以方便调用。
在各种命名中,也可以加入个性化的前缀,比如Faps写的日志类,可以用FLog命名;iwind写的文件操作类,可以用IFile命名;这些前缀 一般要使用大写字母。
定义基础类、方法的时候,也可以借鉴其它语言(JSP,ASP…)中的具有相近功能的类命名方式。比如把各种请求处理类写作Request,把各种 文件操作处理类写作File。
总之,命名的原则是让整个开发团队易用、易记、易懂。
包包的命名使用多个小写字母单词组成,并以下划线分割,比如:
ofc
x_y
用一个或多个单词组成,各个单词首字母大写,各单词之间无需连接符。比如
class GetUserInfo {}
类一般需要有前缀用来避免冲突,一般可以用开发者的名字或者包的名字的简写:
class OfcChart {}中的Ofc和class IXmlNode {
}中的I都是前缀。 函数
用一个或多个单词组成,单词之间使用下划线(_)分割,而且通常需要加前缀:
function if_array_sort($array, $asc = false) {}函数的参数名参考变量的命名。 方法
方法的参数名参考变量的命名。
方法名用一个或多个单词组成,除第一个单词的首字母小写外,其它各单词的首字母大写。比如
function userInfo() {}
一些有名词意义的方法名也例外,首字母也有可能要大写。比如
function PHPServer() {}因为PHP是 名词,而且通常全部写成大写字母,所以这里保留名词的形式。
再次提醒,方法命名中应该借鉴已经成熟的语言的已有的常见命名规则和命名 习惯,切忌自造生僻单词或者甚至使用拼音。
简化方法方法名不宜过长,如:
class IController {function getCurrentControllerFile() {
}
}看起来这个方法很完整地表达了它的意义,但实际上程序员在使用这个方法时必须要记忆和敲入更多的代码,增大了 工作量和错误概率,考虑到当前的方法所在上下文,该方法可以简化为:class IController {
function file() {
}
}这样既不影响用户理解(因为知道是在IController里执行这个方法),又方便了用户调用。 getter方法
getter方法可以用来获取对象的属性值,I-F中命名崇尚简单,已经极少使用getXxx的命名方法,更加偏向于使用简化的命名,以下是几个简 化的例子:
getName() ->name()getAttributes() ->attrs()
insertItemAtIndex($index) ->insertAt($index)
getPrimaryKey() ->pk() setter方法
如果是设置一个属性值,可以使用setXxx的命名方法:
function setParent($parent) {} is方法
isXxx用来判断某个属性值是否为真:
function isAbsolute() {return true;
} can方法
canXxx用来判断当前对象能否执行一项任务:
function canWrite() {return true;
} with方法
可以在方法中使用with表示根据什么取得什么:
function joinWithString($array, $delimString) {} by方法
和with一样,表示根据什么取得什么,比如:
function joinByString($array, $delimString) {} on方法
表示事件监听方法,比如IController中的onBefore()和onAfter():
function onBefore() {}
function onAfter() {
} do方法
表示执行操作,比如控制器中的所有动作都以do开头:
function doSave() {} as方法
将当前对象转换为另外一种数据格式的方法名一般使用as开头,比如:
function asArray() {return array( "name" => $this->_name, "age" => $this->_age );
} 私有和保护方法
如果表示内部方法(不在类外面或方法库外被调用,比如private或protected方法),可 以用_(下划线)开头,比如
private function _setVar($name, $value) {$this->name = $name;
$this->value = $value;
} 构造方法
但如果是构造方法的话,因为方法名要和类名一致,所以首字母也要大写:
class GetUserInfo {function GetUserInfo() {
}
}
不过在PHP5 里我们多使用__construct来表示构造方法,所以上面的这个例子可以写成:
class GetUserInfo {function __construct() {
}
} 变量
包括类属性,变量名都由一个或多个单词,以第一个单词首字母小写开头,其它单词首字母大写组成。比如
$varName, $userInfo;
另外,如果表示私有属性(private)的话,可以用_(下划线)开头,比如
var $_varName;private$_varName; 常量
常量名由一个或多个单词组成,单词之有下划线分隔,且每个字母均为大写,比如
CLUB_USERNAME
CLUB_FORUM_NAME
模板变量是嵌入在模板里等待程序替换的特殊变量,我们用一对花括号包含字母,下划线,数字组成一个模板变量,比如
{{username}}
{{club_forum_name}}
模板变量要使用非常易懂的单词,方便网页制作调试时理解,各个单词之间使用下划线分隔。
文件名普通文件名由一个或多个单词组成,使用下划线分隔,比如
index.php
log_read.php
配置文件或其他特殊的文件名一般以下划线开头,比如:
_class.php
_config.php
类文件的名称应和类名称一致,如IXmlNode类文件名应该为IXmlNode.php。
除类文件外,如无特殊情况,文件名中请不要使用大写字母,以免造成不必要的麻烦。
扩展名扩展名字母一律小写,静态页面和模板页面用.html,动态页面用.php,缓存页用.cache.php,日志存放 文件用.log,SQL语句用.sql(严禁上传到服务器),数据存放用.dat, CSS文件用.css,JS文件用.js等等。
SQL数据库名用 db_ 和 产品域名的二级域名组合,比如 club.mysite.com的数据库命名为 db_club,blog.mysite.com的数据库命名为db_blog
数据库表名用一或多个单词表示,单词之间由下划线分隔,比如
user_info
user_template
数据库字段名用一或多个单词表示,单词之间由下划线分隔,比如
user_id
submit_date
下面是我们使用中的自己约定俗成的一些命名方法:
- id - 表的主键字段
- state - 当前记录的状态
- created_at - 记录创建时间戳
- updated_at - 记录更新时间戳
- 关联的表名_id - 和别的表关联的外键字段
- is_xxx - 判断性字段
- has_xxx - 判断是否有某个特性的字段
- xxx_date - 日期(如2009-02-25)

浙公网安备 33010602011771号