PHP编码规范及数据库优化

编码规范对于程序猿是非常重要的,一个产品的生命周期,开发只占很小的比重,大部分都是在维护。但是基本上没有哪个产品在它的生命周期中是靠开始的开发人员去维护的。其他人维护产品时,可读性较好的代码可以让程序猿尽快而彻底的理解代码中的逻辑,提高维护产品的效率。所以我们要尽量去遵守编码规范,成为一个具有着良好编码习惯的程序猿。

PHP编码规范与原则
1.文件标记
所有PHP文件,代码标记均使用完整的PHP标签,禁止使用短标签。完整的PHP标签是指<?php开头 , ?>结尾,如果是纯PHP类文件,文件最后 ?> 要省略。
2.注释方法
PHP代码注释一般有下面4种情况。
(1)单行代码,在需要注释的代码前面加上//。
(2)多行代码,在需要注释的多行代码前面加/*,后面加*/。
(3)函数注释,是对该函数的说明以及该函数中参数的说明。
/**
*函数说明
*参数1说明
*参数2说明
*参数3说明
*/
(4)临时代码,有时候需要输出代码进行调试,需要在输出函数后边标识出来。
3.代码书写规则
(1)缩进和空格
缩进是一个Tab符,并不是多个空格,虽然看起来一样,但实际上是有很大区别的。
(2)html中子元素相对于父级元素要缩进一个Tab符。
(3)for循环的内容相对于for要缩进一个Tab符。
(4)foreach循环的内容相对于foreach要缩进一个Tab符。
(5)函数体相对于函数名要缩进一个Tab符。
(6)if else执行内容相对于函数要缩进一个Tab符。
(7)switch中case和default条件相对于switch要缩进一个Tab符,执行内容相对于条件(case、default)要缩进一个Tab符。
(8)三目运算符中?和:两边要有空格。
4.文件命名
(1)程序的文件名和目录名都采用有意义的英文命名。
(2)禁止使用拼音或无意义的字母。
(3)只允许出现字母、数字、下划线、中划线字符。
(4)多个词之间使用驼峰命名法。
5.全局变量命名
$_GLOBAL[‘_startTime_’]或者$_GLOBAL[‘g_startTime_’]
两边都有“_”时,中间使用驼峰命名。
6.普通变量命名
(1)字符串:$strTeststr
(2)数组:$arrTestArray
(3)对象:$objTextObject
(4)布尔值:$flagTestFlag
采用驼峰命名时,建议在变量前加上变量的类型作为前缀,方便识别变量的类型。
变量应该以名词为准,尽量不要使用常用关键字或存在模糊意义的单词。
私有变量,建议加上前缀”_”。

7.函数命名
(1)变量、对象、函数名的命名要一致。一律为小写格式,一般用驼峰法命名或者使用_连接,单词之间一般不适用_分割。
(2)函数的小括号与函数名紧挨着,中间不需要小括号。
(3)开始的{与函数要在同1行,与小括号中间加个空格。
(4)具有默认值的参数放在括号内参数列表的后面。
(5)函数调用与函数定义的时候参数之间逗号后面要加空格,例如vote(name, old, sex);
(6)函数起始位置与函数结束位置要保持一致。
(7)命名以英文为蓝本,禁止使用拼音或者拼音英文混杂命名。
(8)变量命名尽量使用有据可查的英文缩写方式,一看就知道干什么,建议单用有意义的动词或动词加形容词的格式命名。例如已经有变量$data,需要重新写变量名的时候应当使用$areadata、$namedata,不要使用$data1、$data2。
(9)如果变量名称过长,可以适当的进行缩写。例如$areadatalist,可以缩写成$adl。
(10)有词性的单词,例如$is***。用来判断是否是***。
(11)常亮应使用大写字母命名,有必要时采用_分割。
(12)PHP中的内建值TRUE、FALSE、NULL必须全部大写。
8.PHP中单引号和双引号的区别
(1)单引号不解析特殊转义字符,例如’\t \r \n’。由于不支持特殊转义字符,解析的较快。
(2)双引号可以解析变量,单引号不可以。
(3)sql语句中的单引号,数据必须加单引号,防止注入漏洞和SQL错误。
9.变量的初始化与逻辑检查
(1)在变量进行累加、直接显示或者存储前必须进行初始化,不能直接去使用变量赋值。
(2)判断无法确定(不知道变量有没有被赋值)的变量,可以使用empty()、isset(),不能直接去操作变量。
需要先判断该变量,不能直接去遍历,如果这个数组是空的,会出现错误。
数据库设计
1.表和字段命名
(1)数据表的名称,表名如果是可数名词,则必须以复数方式命名。例如:ims_mc_members、ims_mapping_fans。
(2)字段命名如果也是可数名词,也需要加s,例如clicks。
(3)当几个表之间的字段有联系时,表的字段要统一,方便识别。例如ims_mc_members和ims_mapping_fans表中的uid字段。
(4)表中的主键自增长字段,要尽量简洁,常用的是id,如果需要使用其他,例如uid、pid、tid等。
(5)如果一个表需要储存另一个表的主键,可以使用单词+id,例如fansid,方便识别字段意思。
2.字段结构
(1)允许为NULL的字段,在使用该字段时,需要先判断其职是否为NULL,不为NULL再去操作该字段。基于效率的考虑,左右的字段不能为空,全部应为NOT NULL.
(2)不会存储非负的字段,必须设置为UNSIGNED类型。UNSIGNED类型比非UNSIGNED类型所能存储的正整数范围大一倍,因此能获得更大的数值存储空间;
(3)存储开关、选项数据的字段,一般存的是1位的数字,通常使用tinyint(1)非UNSIGNED类型。
3.SQL语句
(1)除了表名、字段名称以外,全部语句和函数均需大写。
(2)需要联合查询的表,如果表名过长,需要对表缩写。
4.性能与效率
(1)含有varchar、text等长字段的表为变长表,在运行删除或者修改的时候会使表的碎片更多,需要定期执行OPTIMIZE TABLE清理。定长表不需要执行。
(2)定长表数据比较容易处理,能设置定长表就不要设置变长表。
5.运算与检索
(1)数值运算一般比字符串运算更快,字段能使用数值的就使用数值。
(2)更小的字段类型比更大的字段类型处理要快得多。
(3)定长表应该选择最小的类型,只要能储存值即可。例如,如果mediumint够用,就不要选择bigint。
6.结构优化与索引优化
(1)写入操作过多的,通常可以使用写入缓存的方法。,先将需要写或需要更新的数据缓存至文件或其他表,定期对大表进行批量写操作。
(2)读操作多的,需要依据SQL查询频率设置专门针对高频SQL语句的索引和联合索引。
(3)索引是将条件查询、排序的读操作资源消耗,分布到了写操作中,索引越多,耗费磁盘空间越大,写操作越慢。因此,索引决不能盲目添加。对字段索引与否,最根本的出发点,依次仍然是SQL语句执行的概率、表的大小和写操作的频繁程度。
7.查询优化
(1)最先出现的条件,一定是过滤和排除掉更多结果的条件;第二出现的次之;以此类推。
a>’0’一定是排除最多的数据,b<’1’次之。
(2)ORDER BY中的条件,只与索引有关,与条件顺序无关。
(3)在大多数情况下,根据WHERE条件的先后顺序和ORDER BY的排序字段的先后顺序而建立的联合索引,就是与这条SQL语句匹配的最优索引结构
文件与目录
(1)PHP代码文件后缀名应是小写的.php。
(2)文件名要小些,例如:home.php index.php
(3)扩展名,例如:.inc.php

本文来自投稿,不代表微擎百科立场,如若转载,请注明出处:https://www.w7.wiki/develop/2051.html

发表评论

登录后才能评论