兄弟连php就业班70期学员项目-蜘蛛网编码_第1页
兄弟连php就业班70期学员项目-蜘蛛网编码_第2页
兄弟连php就业班70期学员项目-蜘蛛网编码_第3页
兄弟连php就业班70期学员项目-蜘蛛网编码_第4页
兄弟连php就业班70期学员项目-蜘蛛网编码_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、葫芦娃小组 蜘蛛网项目编码规范A1:开发工具与开发A1.1 开发工具采用 VIM73_46 版本A1.2 开发1)使用 AppServ2.5.10 集成环境,各版本为:5.0.51b2)3)Apache .6A1.3 A1.4 A1.5 A1.6 A1.7版本控制 SVN开发工具字符编码 UTF-8字符缩进 一个 Tab(4 个空白字符宽度)所有成员使用 SVN 进行本地开发,数据库使用服务器数据库本次开发使用 bro框架进行开发特别项:强制命名规范1)所有控制器和模型的类名首字母大写(cla模版的目录名应与控制器的文件名一致ser),之后使用驼峰命名法,同时该文件名大小写与类

2、名完全一致,2)所有控制器和模型内的方法使用驼峰命名法,模版内模版文件名全部使用小写A2:A2.11)文件格式开始结束标记标记使用 2) 只包含的代码文件结束标志 ? 必须省略A2.2 注释规范单行注释使用 /普通多行注释使用 /* 注释内容 */函数以及类等功能模块带有参数的使用 /*注释位置写在被注释内容的上一行注释内容*/A2.3 空行和空白空行的使用时机每段较大的程序体上下加入一个空行下列情况只允许使用一个空行:-两个函数之间。函数内的局部变量和函数的第一条语句之间。块注释或单行注释之前。一个函数内的两个逻辑代码段之间,用以提高可读性。2) 空格的使用时机a)空格一般应用于关键字与左括

3、号“(”之间,不过需要注意的是,函数名称与左括号之间不应该用空格分开。右括号“)”除后面是“)”或者“.”以外,其他一律用空格隔开它们;b)c)一般在函数的参数列表中的逗号后面空格。数学算式的操作数与运算符之间应该添加空格(特例是二进制运算与一元运算除外,字符连接运算符号两边不加空格)。d)e)f)g)for 语句中的表达式应该用逗号分开,后面添加空格。强制类型转换语句中的强制类型的右括号与表达式之间应该用逗号隔开,添加空格。除字符串中特意需要,一般情况下,在程序以及HTML 中不出现两个连续的空格;说明或显示部分中,内容如含有中文、数字、英文单词混杂,应当在数字或者英文单词的前后加入空格。A

4、2.4 字符串的使用使用单引号 字符串为固定值,不包含“t”等特殊转义字符 KWPO LQSXW WSH ”WHW” QDPH ”XVHUQDPH” YDOXH ”DGPLQ” ! b) 当字符串是不包含变量的文字,应当用单引号来括起来 YDU YDOXH 文件标识:编码规范当前版本:1.5作者:葫芦娃小分队完成日期:2013-11-7c) 关联数组的下标数组中,如果下标不是整型,而是字符串类型,请务必用单引号将下标括起,正确的写法为$arraykey,而不是$arraykey,因为不正确的写使器认为key 是一个常量,进而先判断出发错误事件,产生一条Notice 级错常量是否存在,不存在时才

5、以“key”作为下标带入表达式中,同时 DUUDNH;数据库SQL 语句中,所有数据必须加单引号,无论数值还是字串,以避免可能的注入误d)和SQL 错误。83$7( XVHUV 6(7 QDPH DGPLQ DJH KHLJKW ZKHUH LG 引号 字符串中的变量需要替换时:$var= “ello $world”2) 使a)b)当文字字符串包含单引号,那么字符串就引号括起来,主要针对于sql 语句$sql = “ELECT * FROM table WHERE id=$id ”;在正则表达式(用于preg_系列函数和ereg 系列函数)中,建议全部使c)引号,这是为了人工分析和编写的方便,

6、并保持正则表达式的,减少不必要的分析3) 注意:所有数据在现错误数据库之前,均需要进行addslashes()处理,以免特殊字符转义在数据库的时候出A2.5 命名原则文件名函数、配置文件等其他类库文件之外的一般是以.为后缀(第引入的不做要求)。b) 确保文件名和调用大小写一致,是由于在类Unix系统上面,对大小写是敏感的(而在调试模式下面,即使在Windows也会严格检查大小写)。c) 类名和文件名一致(包括上面说的大小写一致),例如 UserAction类的文件命名是UserAction.class.,InfoM类的文件名是InfoM.class.d) 类文件都是以.class.为后缀(这里

7、是指的的类库文件,不代表外部加载的类库文件),使用驼峰法命名,并且首字母大写,例如Db.class.。2) 目录命名某些自动加载的目录根据程序应以字母大写开始,比如根目录的Public,目录命名也一定要有描述性的意义,在可能的情况下, 多以复数形式出现,如./templates、./images 等。开发 如需新建目录,应与项目组成员进行磋商,达成一致后方可实施。另外,要在所有不包含普通程序(即能够被URL 直接调用的程序)的目录中放置一个 1字节的index.htm 文件,内容为一个空格。几乎除根目录以外,所有目录都属于这一类型,因此开发者需要在这些目录全部放入空index.htm 文件,以

8、避免当http 服务器的Directory 容器中Options Indexes 打开时,服务器文件被索引和列表。3) 类名一个文件中一个类,应有描述性,杜绝一切拼音、或拼音英文混杂名方式类名包括字母字符,不允许使用数字和其他字符如果类名包括多个单词,应使用驼峰式命名方式,每个单词的第一个字母必须大写,不允许连续大写。例如: AaaBbbCcc (如果类名由aaa, bbb, ccc 三个单词组成的)a)b)c)d)Action控制器类以Action为后缀,例如 UserAction、InfoAction模型类以M为后缀,例如UserM、InfoM属性方法名使用驼峰法,并且首字母小写,例如 t

9、ableName名使用驼峰法,并且首字母小写,例如 getUserName4) 函数和方法名a)b)c)d)函数名应具有描述性,杜绝一切拼音、或拼音英文混杂函数名包括字母字符,不允许使用数字和其他字符。名方式函数名使用小写字母和下划线的方式,例如 get_cnt_ip函数名应带有get,set等动作性描述。 function getUser()/函数内容5) 变量名a)b)变量也应具有描述性,杜绝一切拼音、或拼音英文混杂名方式变量包含数字、字母和下划线字符,不允许使用其他字符,变量命名最好使用项目中有据可查的英文缩写方式,尽可以要使用一目了然容易理解的形式;变量除了在循环体(for,forea

10、ch,while)中,其他位置允许但不鼓励使用没有描述意义的字母作为变量名。例如:$i,$j。c)常量名常量名应具有描述性,杜绝一切拼音、或拼音英文混杂名方式b) 常量以大写字母和下划线命名,例如 HAS_ONE和 MANY_TO_MANY7) 其他配置参数以大写字母和下划线命名,例如HTML_CACHE_ON数据表和字段采用小写加下划线方式命名,例如 think_user 和 user_nameA2.6 语言结构if/else/else ifif 结构中,前花括号必须和条件语句在同一行,后花括号单独在最后一行,其中内容使用缩进。b) else 和else if 与前后两个大括号括号,以保证结

11、构清晰;,个空格。另外,即便if 后只有一行语句,仍然需要加入大c)d)e)f)首括号与,尾括号与关键字同列;if 中条件语句的圆括号前后必须有一个空格;括号内的条件语句中操作符必须用空格分开;不允许使用elseif 写法,应使用else if 的写法; if ($one = 1 ) else if ($one = 2) 在条件语句中存在多个运算符的时候,使用括号强制说明优先级,避免开发g)因为运算符优先级概念造成的逻辑错误。$one = $two = 1 | $two = 2 & $three 3; /错误的$one = ($two = 1) | ($two = 2 & $three 3);

12、 /正确的h) 在判断条件中明确判断内容的变量类型,使用正确的类型,不允许在判断结果为true 的时候使用1,反之亦然。2)switcha)b)c)switch switch switch在条件语句的圆括号前后必须都有一个空格。中的代码使用缩进,case 内的代码再进行缩进结构中, break 的位置视程序逻辑,与 case 同在一行,或新起一行均可,但同一 switch体中,break的位置格式应当保持一致。switch 语句应当有 default 语句作为结束。不允许使用两个及两个以上的 case 条件对应一个 break 语句,如果有这样的情况出现,必须要注明当时的情况。switch (

13、$var) case 1: echo var is 1; break; case 2: echo var is 2; break;default: echo var is neither 1 or 2; break;switch ($str) case abc:$result = abc; break;default:$result = unknown; break;d)e)3)数组a)b)c)d)使用数组前必须一个数组 $a = array();数字索引数组索引不能为负数,如果不存在定义索引,建议索引以 0 开始。数组中逗号后面间隔一个空格,提高可读性。 array(one_value, t

14、wo_value);如果数组元素过多需要换行显示时,在每个连续行要用缩进将开头对齐。array(one_value, two_value, three_value);e)如果使用 key/value 的形式进行关联数组 array( one_key=one_value, two_key=two_value, three_key=three_value);的话,鼓励把数组分成多行,提高可读性。4) 类的a)b)c)d)e)开始的左大括号与类的定义为同一行,中间加一个空格,不要另起一行;每个类必须有一个符合类中的代码必须使用缩进;or 标准的文档块;每个文件中只有一个类,在文件名中包含类名 ,例如

15、“类名.class.”;不允许将其他代码放到类文件里。/*/ation Block Hereclass SleClass /类的所有内容类中成员属性和变量的类中成员属性的必须放到类的顶部,也就是在方法上面,而且需要使用合适的权限限制外部级别;b) 任何变量在定义、进行累加、直接显示或的变量。$number = 0; /数值型初始化$string = ; /字符串初始化$array = array(); /数组初始化前必需进行初使化,以防止构造提交的变量覆盖程序中使用c)判断一个无法确定(不知道是否已被赋值)的变量时,可用 empty()或 isset(),而、不要直接使用 if($switch

16、)的形式,除非你确切的知道此变量一定已经被初始化并赋值。判断一个变量是否为数组,请使用 is_array(),这种判断尤其适用于对数组进行遍历的操作,例如 foreach(),因为如果不事先判断,foreach()会对非数组类型的变量报错;判断一个数组元素是否存在,可使用 isset($arraykey),也可使用 empty();d)e)6)函数的定义与使用a)b)c)d)e)f)g)函数时参数的名字和变量名规范一致;函数定义中的左小括号,与函数名紧挨,中间无需空格;开始的左大括号与函数定义为同一行,中间加一个空格,不要另起一行;如果使用具有默认值的参数,应该位于参数列表的后面;函数不管在调

17、用还是在的时候,参数与参数之间都要加入一个空格;必须仔细检查并切实杜绝函数起始缩进位置与结束缩进位置不同的现象。建议不要使用全局函数;function authcode($string, $operation, $key = ) /函数体h)在使用系统函数时,除非必要,否则不要使用扩展模块中的函数。如果使用,也应当加入必要的判断,这样当服务器在环境不支持此函数的时候,也可以进行必要的处理。还应该在文档和程序中的功能说明中,加上一些兼容性说明。A2.7 其它规范细节1)错误级别a) 在开发和调试阶段,请在全局文件中使用 error_reporting(E_ALL),作为默认的错误级别,此级别最为

18、严格,能够程序中所有的错误、警告和提示信息, 以帮助开发者检查和核对代码,避免大多数安全性问题和逻辑错误、拼写错误。b) 在发布时,请使用 error_reporting(E_ERROR | E_WARNING | E_PARSE),作为默认的错误级别,以利于用户使用并将无谓错误提示信息降至最低。A3设计规范A3.1 数据表的设计1)数据库表名a)b)c)d)e)f)表名应具有描述性,杜绝一切拼音、或拼音英文混杂名方式;表名允许使用字母,数字和下划线,不允许使用其他字符。表名使用单词开头,不允许使用数字和下划线开头;表名一律有前缀,前缀与表名之间以下划线连接。使用前缀可以让同一个项目在一个库中

19、安装多个;表词一律小写,单词之间使用下划线连接;表名长度过 64 个字符;所有数据表名称,只要其名称是可数名词,则建议以复数方式命名,例如:zz_users(用户表)、zz_articles(文章表);g)表名要回避的保留字(保留字见 附录 B);2)数据表字段名a)b)c)d)e)f)字段名应具有描述性,杜绝一切拼音、或拼音英文混杂名方式字段名允许使用字母,数字和下划线,不允许使用其他字符。字段名鼓励使用与所在表的内容相关单词开头,允许但不鼓励使用数字和其他字符开头。字段名一律小写,单词之间使用下划线连接。字段名长度过 64 个字符。字段类型和长度在不同数据表中必须保证一致性,不允许出现同一

20、字段在一个表中为整型但另外一个表中为字符型的情况出现。g)当几个表间的字段有关连时,要注意表与表之间关联字段命名的中的 uid, 都保存有 xs_users 表中的 id。,如 zz_orders 表中的 uid 与 zz_carts 表h)i)多项内容的字段,或代表数量的字段,也应当以复数方式命名,例如: views(查看次数);每个表建议都要有一id 自增量的字段,可以使用全称的形式,也可只将其命名为 id。3)字段索引名称a)b)c)d)e)索引名称允许使用字母,数字和下划线,不允许使用其他字符。对任何外键采用非成组索引。不要索引 text/blob 类型的字段,不索引字符过多的字段。根

21、据业务需求建立组合索引。索引长度过 64 个字符。4)字段结构a)b)进行表结构设计时,应当做到恰到好处,反复推敲,从而实现最优的数据体系。NULL 值的字段,数据库在进行比较操作时,会先判断其是否为 NULL,非 NULL 时才进行值的比对。因此基于效率的考虑,所有字段均不能为空,即全部使用 NOTNULL 的属性修饰字段;c)d)如果不会使用非负数的字段时(如各项 id、数等),必须设置为 UNSIGNED 类型,能获得范围大一倍数值空间;e)任何类型的数据表,字段空间应当本着足够用,不浪费的原则 个别字段类型在数据结构设计的时候需要注意:enum 枚举类型由 tiny类型代替;包含任何

22、varchar、text 等变长字段的数据表,即为变长表,反之则为定长表。在设计表结构时如果能够使用定长数据类型尽量用定长的,因为定长表的查询、检索、更新速度都很快。必要时可以把部分关键的、承担频的表拆分,例如定长数据一个表,非定长数据一个表。f)繁g)更小的字段类型比更大的字段类型处理要快得多。对于字符串,其处理时间与字符串长度直接相关。一般情况下,较小的表处理更快。对于定长表,应该选择最小的类型,只要能所需范围的值即可。例如,如果medium够用,就不要选择 big。对于可变长类型,也仍然能够节省空间。一个 TEXT 类型的值用 2 字节值的长度,而一个 LONGTEXT 则用 4 字节将

23、使每个值节省 2 字节。其值的长度。如果的值长度不会超过 64KB,使用 TEXTh) 数值运算一般比字符串运算更快。例如比较运算,可在单一运算中对数进行比较。而串运算涉及几个逐字节的比较,如果串更长的话,这种比较还要多。如果字符串列的数值数目有限,应该利用普通整型来获得数值运算的优越性。A3.2 索引设计原则索引,常用的有 PRIMARY KEY、INDEX、UNIQUE 几种。通常,在单表数据值不重复的情况下,PRIMARY KEY 和 UNIQUE 索引比 INDEX 更快,要酌情使用。 索引能加快查询速度,而索引优化和查询优化是相辅相成的,既可以依据查询对索引进行优化,也可以依据现有索引对查询进行优化,这取决于修改查询或索引,哪个对现有产品架构和效率的影响最小。根 据 产品的实际运行和被 情况,找出哪些 SQL 语句是最常被执行的。最常被执行和最常出现在程序中是完全不同的概念。 最常被执行的 SQL 语句,又可被划分为对大表(数据条目多的)和对小表(数据条

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论