




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、刖言常言道,没有规矩,不成方圆”。良好的编程风格与规范对开发者以及项目管理人员都是非常重要的。当一个软件项目尝试着遵守公共一致的标准时,可以使参与项目的开发人员更容易了解项目中的代码、弄清程序的状况。使 新的参与者可以很快的适应环境,防止部分参与者岀于节省时间的需要,自创一套风格并养成终生的习惯,导致其它人在阅 读时浪费过多的时间和精力。而且在一致的环境下,也可以减少编码岀错的机会。缺陷是由于每个人的标准不同,所以需要一段时间来适应和改变自己的编码风格,暂时性的降底了工作效率。 从使项目长远健康的发展以及后期更高的团队工作效率 来考虑暂时的工作效率降低是值得的,也是必须要经过的一个过程。标准不
2、是项目成功的关键,但可以帮助我们在团队协作 中有更高的效率并且更加顺利的完成既定的任务。第1章、排版规则1.1、缩进代码缩进使用2个空格,而不是tab键,因为在不同的编辑器查看代码时,tab键的显示岀来的长度根是不一样的,虽然空 格会增加文件的大小,这些误差是微不足道的。在很多编辑器中,都可以设置将 tab键设置为2个空格,如果你习惯使用tab键的话。1.2、空格规则空格应该在以下情况下使用:1.关键字与(之间应该有1个空格,例:while ($user->uid > 0) 2.函数名和(之间不应该有空格,例:function arg() 3.元操作符与其操作数之间不应该有空格,除
3、非操作数是个单词,例:typeof。4.每个在控制部分,例for语句中,“后必须跟一个空格。5.每个,后应跟一个空格。1.2.1、逻辑运算符前后都必须加空格,加一减一运算除外1/ 正确2$a = $b:3/错误4$a=$b;5$a =$b;6/ 正确7$a+;8$a-;9/错误10$a +;11$a -;1.2.2、多个参数分隔时必须加空格1/正确2$a, $ab, $c;3arg($a, $b, $c);4/错误5$a,$ab,$c;6arg($a,$b,$c);1.2.3、语法关键字后必须加空格if, for, while, switch等关键字。例:/正确for($a = 0;$ <
4、; 10; $a+);/错误1.3、字符串和变量的连接规则字符串与变量连接使用“.,且在“左右都有1个空格,使用“自动转义变量时必须在变量前后加“”/正确$result='file_' . $var;$result='file_var'/错误$result='file_'.$var;$result='file_$var'1.4、每行一个语句,除非这些语句有很密切的联系,否则每行只写一个语句。用空行来将逻辑相关的语句分隔幵以提高程序的可读性。正确$node_t yp es = node_get_ty pes('t yp es
5、', NULL, TRUE);foreach ($node_types as $type => $info) /错误$node_t yp es = node_get_ty pes('t yp es', NULL, TRUE);foreach ($node_types as $type => $info) /1.5、关键字if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要有完整的括号例: 正确if (NULL = $arg) 2return;2/错误if(NUL
6、L = $arg) return;1.5.1 、if格式如下:if(condition) /if(condition) / else 1011if (condition) 12/13 else /14151.5.2、for格式如下:for($i = 0; $i < 1; $i+) 351.5.3、do格式如下:不像其他复合语句,do语句总是以“结束。do / while (condition);1.5.4、do格式如下:switch (ex pr ession) case expression:statements;default:statements;每一组 statements(除了
7、 default,应以break、return或者throw 结尾。不要让它顺次往下执行。)1.5.5、try格式如下:try statements catch (variable) statements1.6、数据库?查询语句中关键字部分应该大写。第2章、命名规范命名统一遵守Linux C 命名规范,包括 PHP、XHTML、CSS、JS变量名所有字母都小写,使用“_”为每个词的分界(CSS中使用-”,因为很多drupal通常为类似#block-vacation)。),变量名必须有一定的意义,使程序一目了然。生成的代码都用-“”(例如区块ID,在项目中,相同意义的变量变量名应该尽量相同,例:
8、drupal项目中$node表示节点,节点在很多地方都使用到,如果命名相同,一眼就可知道这是个节点,可以使用节点的相关函数操作, 如要区分多个节点,则可以加上有意义的字母在前,例:$book node 、$color node2.1、常量PHP的常量应该全部使用大写字母,并使用一来正确的分隔字词。常量使用模块名来作为前缀,这样个可以避免常用字词的冲突。例:你的模块名为 test.module ,那么常量名字应该如例 TEST_USER。define('TEST_CONFIRM_UID', 0);2.2、全局变量全局变量命名规则:$_模块名(主题名)_全局变量名例:/错误glob
9、e $records;/ 正确globe $_test_records;2.3、静态变量静态变量使用前缀S,例:$s_records;2.4、临时变量不要将在循环中频繁使用的临时变量如$i、$j等用于其他用途。2.5、函数命名函数名采用C GUN的惯例,所有字母使用小写字母,规则:模块名 +_+函数名,要注意的是命名时不要与drupal的相关hook重名。2.6、文件名命名文件名应该都是小写的。例外情况就是文档文件,它们全部大写并且类型为txt文件。例如:LICENSE.txtREADME.txtINSTALL.txt第3章、编程规范系统统一使用时间戳time()作为时间标志,存入mysql时
10、使用INT(10)类型写入。引号使用单引号,只有当引号重叠时才使用双引号,这样每进程可以省几百K内存。统一使用,禁止使用3.1、数组定义规则key、值必须使用单/双引号。/正确array(name' => 'myname','type' => 'mytype');/错误array(name => myname,type => mytype10);3.2、不采用缺省方式测试变量/函数if ($user > 0) /1/ 正确41/*2* Imp lementation of hook_cron().if(arg
11、(1) != ”)/错误10if($user) 11/121314if(arg(1) /15163.3、文件结构规则drupal 模块开发规则如下(以模块名为 book 为例):主模块(book.module)包含 hook_help()、hook_init()、hook_menu()以及该模块的一些共用函数,如需要调用其他模块的函数(必须启用的核心模块除外),应先判断该模块是否开启(例:module_exists('book');)。book.admi n.i nc(管理页面相关代码)、book.page.inc(用户操作所用代码),应该归类放置,使用hook_menu中“f
12、ile ”键指向。模块中使用到的一些js插件,如jquery 插件,应放在模块目录中js文件夹中。3.4、数据库操作规则?查询1条以及多条记录时,使用db_query_ra ngeO 。?每次查询如果可以都应该加上 ORDER针对INDEX排序。3.5、注释注释文档遵循Doxygen注释样式,注释块语法如下(包括 css、js):*/4function node_cron() 6db_quei7('DELETE FROM history WHERE timestam p < %d', NODE_NEW_LIMIT);注释块必须紧挨着放在函数前,中间不存在空行。drupal
13、能够理解下面所列的 Doxygen构造体,具体构造体作用请参照Doxyge n 文档:?ma inp age?file?defgrou p?i ngroup?addtogrou p? p aram?return?li nk?see?3.5.1、/ $id$“ $id$用于追踪版本号以及最后修改的用户,以注释方式放在每个文件最前头(包括 js、css等所有需要提交到版本库的文件)。当把代码提交到 CVS( SVN),系统将会自动对这一标签进行解析和扩展,变成如下:/ $Id: node.module,v 1.947.2.29 2010/12/15 12:53:33 goba Exp $第4章、编
14、写安全的代码4.1、处理用户输入输出非drupal hook_form 生成的表单(包括一些ajax)提交上的数据,应该进行安全过滤。以下列岀drupal提供的一些过滤函数。? check_plain(HTML),转换为纯文本,将特定字符转换为HTML实体。?filter_xss(HTML),使用一组标签,检查和清理HTML? check_markup(HTML),使用过滤器(可以自定义)过滤? drupal_urlencode(URL),将特定字符编码为 %0x?check_url(URL),清理 url 中有害协议,例如 javascript:runevilJS()通常在输岀中,应该用t(
15、)函数,来过滤输岀,以便支持drupal的多语言模块。4.2、处理mysql语句进行数据库的增删查改操作时,都要使用db_query()函数(drupal7使用方法有变动,具体请参照相关资料),表名必须使用大括号,这样在有数据库前缀的时候,可以自动判断。如下:/* Imp lementation of hook_cron().*/function node_cron() db_query('DELETE FROM history WHERE timestam p < %d', NODE_NEW_LIMIT);4.2.1、使用db_rewrite_sql()来保持私有数据的
16、私有性如果启用了节点访问模块对节点访问进行了权限控制,那么直接通过 db_query()查岀的数据是无法进行权限过滤的,这时候,需要用到db_rewrite_sql(),在一些节点数据的操作上,如果mysql语句没处理到权限部分,则必须使用该函数。例:$result = db_query(db_rewrite_sql("SELECT DISTINCT b.* FROMblocks b LEFT JOIN blocks_roles r ONb.module = r.module 1 AND b.delta = r.delta WHERE b.theme = '%s' A
17、ND b.status = 1 AND (r.rid IN (". db_pl aceholders($rids) .") OR r.rid ISNULL) ORDER BY b.region, b.weight, b.module", 'b', 'bid'), array_merge(array($theme_key), $rids);第5章、其他重要杂项?不到万不得已,不修改 drupal核心代码,如有修改,应在开发文档中有记录。?模块中 HTML 展示部分尽量都使用默认风格, 例、table (theme('table'
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 管道防腐涂层修复工艺考核试卷及答案
- 油料干燥工艺考核试卷及答案
- 橡胶模具精密模具制造工艺考核试卷及答案
- 坚果种植修剪时期确定工艺考核试卷及答案
- 2024新版2025秋青岛版科学六三制三年级上册教学课件:第二单元小结复习
- 辽宁省沈阳市2025-2026学年八年级上册第一次月考数学模拟试卷含解析
- 音响技术考试试题及答案
- 应急实操面试题库及答案
- 护师考试专业试题及答案
- 电气专业期末试题及答案
- 湖北省2025届高三数学上学期9月起点考试含答案
- (高清版)DG∕TJ 08-7-2021 建筑工程交通设计及停车库(场)设置标准
- 《优化教学策略:打造卓越课件的秘诀》课件
- 教师专业发展-课件
- 猪蹄供货协议书范本
- 2025年数学新课标《义务教育数学课程标准(2025年版)》解读
- 网络分析仪企业ESG实践与创新战略研究报告
- 《拍摄校园微视频》教学课件-2024-2025学年冀美版(2024)初中美术七年级下册
- 抗美援朝“铭记历史迎接挑战”-第11年迎回在韩中国人民志愿军烈士遗骸主题班会课件
- 公路工程造价编制自采材料预算单价计算课件
- 保险行业组织发展
评论
0/150
提交评论