




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ShopExShopEx编码规范编码规范编码规范学习目标v 在完成本章的学习后,您将能够从以下几个方面了解编码规范:v 编辑器设定v 代码布局v 注释v 命名约定v 质量保证v SQL语句 目录大纲1.编辑器设定2.代码布局3.注释4.命名约定5.质量保证6.SQL语句主要内容v缩进q1个Tab制表符为4个空格。PHP文件采用4个空格的缩进,HTML文件以及HTML文件中嵌入的JavaScript代码采用2个空格的缩进;单独的 JavaScript以及CSS文件采用4个空格的缩进。v字符编码q所有PHP、HTML文件均保存为UTF-8的字符编码。1 编辑器设定 2 代码布局 v 相对独立的程序
2、块之间、变量说明之后必须加空行 q 示例:如下例子不符合规范if (!$valid_ni() . / program code $repssn_ind = $ssn_dataindex-repssn_index;$repssn_ni = $ssn_dataindex-ni; q 应如下书写:if (!valid_ni() . / program code $repssn_ind = $ssn_dataindex-repssn_index;$repssn_ni = $ssn_dataindex-ni;2 代码布局v较长的语句要分成多行书写 v一行程序需小于80字符q较长的语句要分成多行书写,长表
3、达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。2 代码布局v断行的例子q $perm_count_msg-len = NO7_TO_STAT_PERM_COUNT_LEN + STAT_SIZE_PER_FRAM * strlen( $len ); $act_task_table$frame_id * STAT_TASK_CHECK_NUMBER + $index-occupied = $stat_poiindex-occupied;v一行只写一条语句不允许把多个短语句写在一行中,即一行只写一条语句。示例:如下例子不符合规范$rect
4、-length = 0; $rect-width = 0; 应如下书写:$rect-length = 0;$rect-width = 0;2 代码布局v始终包含大括号这是因为懒于多敲两个字符而给代码清晰带来问题的又一个情形。 示例:如下例子不符合规范 if ($condition) do_stuff(); for ($i = 0; $i $size; $i+) do_stuff($i); 应如下书写 if (condition) do_stuff(); for ($i = 0; $i $size; $i+) do_stuff(); 2 代码布局v大括号放在哪儿 程序块的分界符(大括号和)应各独
5、占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。 示例:如下例子不符合规范for (.) . / program code应如下书写。for (.) . / program code2 代码布局vswitch写法示例:如下例子符合规范 switch ()case 1: .program break; case 2: .program break;2 代码布局v符号之间使用空格采用这种松散方式编写代码的目的是使代码更加清晰。由于留空格所产生的清晰性是相对的,所以,在已经非常清
6、晰的语句中没有必要再留空格,给操作符留空格时不要连续留两个以上空格。 示例:如下例子不符合规范if ( ($i 8) ) . 应如下书写:if ( ($i 8) ) . 2 代码布局v字符串连接符当使用字符串连接符时必须在句点(.)两侧加上空格。示例:如下例子不符合规范$str = ;应如下书写:$str = ;2 代码布局v空行的使用 谁也不愿意看到挤在一堆的无序的代码。我们在写代码的时候总是会利用一些空行来增加代码可读性。合理的利用空格来区分代码段会使代码的逻辑思路更加明确。我们强行规定的空行有以下两种情况:1、 之前必须有且只有1个空行3、两个函数之间必须有1个空行。4、return、d
7、ie、exit之前如果有其他语句的情况下应加上一个空行。在代码中我们不允许在行尾有多余的空格。2 代码布局v文件头部模板文件头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容等。注:以ShopEx网上商店为例,其它项目可另行规定。/* * ShopEx网上商店 文件中文名称= * 版权所有 (C) 2003-2009 上海商派网络科技有限公司,并保留所有权利。 * 网站地址:http:/ * - * 您只能在不用于商业目的的前提下对程序代码进行修改和使用; * 不允许对程序代码以任何形式任何目的的再发布。 * = */3 注释v函数头部注释 每个函数之前应当有注释,告诉一个程
8、序员使用这个函数所需要知道的事情。一个最小化的注释应包括:每个参数的意义,期望的输入,函数的输出。 /* * some_func * 函数的含义说明 * * param mixed $arg1 参数一的说明 * param mixed $arg2 参数二的说明 * access public * return bool */3 注释v注释位置注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面,如放于上方则需与其上面的代码用空行隔开$person_name=jack; / active statistic task number / active
9、statistic task numberDefine(MAX_ACT_TASK_NUMBER,1000) 3 注释v连续case注释对于switch语句下的case语句,如果因为特殊情况需要处理完一个case后进入下一个case处理,必须在该case语句处理完、下一个case语句前加上明确的注释。这样比较清楚程序编写者的意图,有效防止无故遗漏break语句。示例:switch ($i) case CMD_INIT: echo i equals 0; break; case CMD_START: echo i equals 1;/ now jump into case CMD_A case C
10、MB_A: echo i equals 2; break;3 注释v结构体声明代码中代表结构体的数组变量,要提前声明。示例:function example_fun() $student = array(name = 小明, /名称addr = 详细地址, /地址sex = 男, /性别city = 上海 /城市 )3 注释v注释以中文为主 注释应考虑程序易读及外观排版的因素,使用的语言若是中、英兼有的,建议多使用中文,除非能用非常流利准确的英文表达。3 注释v禁止拼音命名法q代码中禁止用拼音命名法。v变量命名q 变量名应当全部小写,并且词语之间以单个下划线分隔。q 名称应当是描述性的,并且简
11、明例如: $current_user 是正确的, 但是 $currentuser 和 $currentUser 就不正确。4 命名约定v函数命名 使用单词间用单下划线分隔的小写名称,允许动宾词组为执行某操作的函数命名。示例: function input_record() function get_current_color() function is_boy()动词表:add / edit / remove begin / end create / destroy get / setincrement / decrement put / get lock / unlock open / cl
12、osestart / stop show / hide send / receive cut / paste 系词表:is has4 命名约定v三元运算符 q三元运算符只应该用来做简单的事情。它们只适合拿来做赋值用 示例:不应该使用它们的地方 ($i $size) ? do_stuff($foo) : do_stuff($bar); 示例:使用它们的合适地方 $min = ($i $j) ? $i : $j;5 质量保证v变量初始化 这个问题最容易在检查 HTML 表单传递了什么变量时出现。这些错误可以通过使用内嵌的 isset() 或者empty()函数检查一个变量是否被设置来避免。 示例:
13、 老办法if ($forum) . 新办法:if (!empty($forum) .if (isset($forum)) 5 质量保证v 引用字符串 在 PHP 中有两种不同的方式引用字符串使用单引号或使用双引号。主要区别是:解析器在双引号括起的字符串中执行变量替换,却不在单引号括起的字符串中执行示例:如下例子不符合规范$str = This is a really long string with no variables for the parser to find.; do_stuff($str); 应如下书写:$str = This is a really long string wi
14、th no variables for the parser to find.; do_stuff($str);5 质量保证v 关联数组的键名q在 PHP 中,使用一个不用引号括起来的字符串作为一个关联数组的键名是可以运行的。注意,这只是当我们使用字符串时的情况,不是当我们使用变量时的情况。示例:如下例子不符合规范 $foo = $assoc_arrayblah; 应如下书写:$foo = $assoc_arrayblah;5 质量保证v 输入变量的初始化q无论是函数的参数还是通过URL传递的变量,在调用之前均必须对其进行预处理以及设定默认值。 q字符串必须进行trim及转义的处理,并且如果变
15、量的值是在我们预计的范围之内,需要对变量的非法值做出相应的处理;对于数字型的变量则需要进行intval或者floatval的处理。5 质量保证v require和includeq在程序中需要使用包含文件的时候我们要求使用require_once或者include_once,不允许使用require或者include。q对于程序必须包含的文件只能采用require_once,而对于某些有条件包含的文件在引用时只能使用include_once。5 质量保证v 文件命名q 文件名应当全部小写,并且词语之间以单个下划线分隔。 q 名称应当是描述性的,并且简明例如: current_user.php 是
16、正确的, 但currentuser.php 和 currentUser.php 就不正确。5 质量保证vSQL select 语句q 在已知需要查询的字段的前提下,不允许使用如下的代码:SELECT * FROM mytable 取而代之的写法是将每一个字段名写上去,请不要偷懒。 SELECT col1, col2, col3 FROM mytableq 在需要获得已知记录数量情况下,请使用 LIMIT offset, count 的方式,尽量不要使用无 LIMIT 的 SELECT 语句。q 在需要或者满足条件的记录数量的情况下,请使用 SELECT count(*|col1) FROM 的方式,尽量不要使用 SELECT col1 FROM 的方式。6 SQL 语句 vSQL insert 语句q SQL INSERT 语句可以写成两种不同方式。或者你明确指明要插入的列,或者你已经知道数据中各列的顺序,不用详细指定它们。我们希望使用前一种方法,也就是详细说明插入哪些列。这意味着应用程序代码不会依赖于数据库中字段的顺序,也不会因为我们增加另外的字段而崩溃。# 这不是我们想要的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商场户外改造方案(3篇)
- 物流运转方案模板(3篇)
- DB23-T2996-2021-红色旅游从业人员服务规范-黑龙江省
- DB23-T2930-2021-林下大球盖菇越冬栽培技术规程-黑龙江省
- 品牌开发项目管理制度
- 全校食堂卫生管理制度
- 养殖项目建设管理制度
- 公司综治保卫管理制度
- 冷链产品包装管理制度
- 化工安全生产管理制度
- 精装分包劳务合同协议书
- 2025-2030中国酸奶冰淇淋市场需求前景预测及投资效益盈利性研究报告
- 2025年高考英语应用文第09讲 读后续写分话题万能结尾满分句(讲义)
- 图像编辑基础Photoshop试题及答案
- 新媒体国企面试题及答案
- 宝宝改姓夫妻协议书
- 2021入河(海)排污口三级排查技术指南
- 央企华润集团杭州片区年度品牌传播策略案
- 2025年中考第一次模拟考试卷:地理(陕西卷)(解析版)
- 《社区公园》课件
- 2025年中考语文作文心理健康主题作文高分模板(分步详解+例文示范)
评论
0/150
提交评论