11个PHPer必须要了解的编程规范


Posted in PHP onSeptember 22, 2014

本文将讨论常用的良好的代码习惯,或者称为代码规范,在PHP领域。

1,错误报告开启

错误报告是在PHP中一个非常有用的功能,应同时在开发阶段启用。 这可以帮助我们确定我们的代码中的问题。 最常用的功能是“E_ALL”,这有助于我们发现所有的警告和严重错误。 必须指出的是,我们把我们的代码投入上线前,我们应该关闭这个功能提示,否则会在浏览器上的暴漏所有潜在错误及警告。

2,使用DRY原则

‘Do not Repeat Yourself',DRY原则指的是不要重复你的代码.。 这个概念是一个非常有用的编程概念,可硬应用在任何编程语言,如Java,C#或PHP均可以。 使用DRY原则,确保我们在程序中没有冗余的代码。
违反 DRY 原则的解决方案通常被称为 WET,指代“write everything twice”,我们写的相同功能的代码会出现多次以上,别大家戏称是喜欢打字。

让我们看看到下面的代码:
Listing1:
WET代码方式:

$mysql = mysql_connect ( 'localhost', 'mysqladmin_uid', 'mysqladmin_pwd' );
mysql_select_db( 'DB_NAME' ) or die( "Sorry !! No database selected!");

下面使用DRY 原则优化代码:

$db_host = ' localhost ';
$db_user = ' mysqladmin_uid ';
$db_password = ' mysqladmin_pwd ';
$db_database = ' DB_NAME ';
$mysql = mysql_connect($db_host, $db_user, $db_password);
mysql_select_db($db_database);

3,适当的使用缩进及空格

在使用任何一种编程语言编写代码时,必须确保代码在需要的地方提供在必要适当的缩进和足够的空格。 以增加了代码的可读性,用更有效的方式管理代码。

4,使用有意义和一致的命名标准

正如任何编程语言,PHP的老兵还建议我们遵循有意义的命名标准。 我们有两个主要方式在实现这个要求:
A.驼峰式
在这种方法中,第一个字母是小写,每一个单词的第一个字母其后以大写。

Listing2:

public class MyClass {
public void methodName(String argName) {
}
}

B.下划线式
在这种方法中,我们把每两个词之间的下划线(“_”)。 使用这种方法时,代码可以被修改如下:
Listing3:使用下划线代码片段

public class MyClass {
public void method_name(String arg_name) {
}
}

5,避免深层嵌套

使用任何开发语言,多级嵌套降低了代码的可读性。 任何开发者都应应避免使用深层嵌套。

Listing4:代码片段具有多级嵌套

<?php
class MyClass {
public function method_name($arg_name) {
if (is_writable ( $folder )) {
if ($fp = fopen ( $file_location_path, 'w' )) {
if ($stuff = extractSomeConditionalStuff ()) {
if (fwrite ( $fp, $stuff )) {
// ...
} else {
return false;
}
} else {
return false;
}
} else {
return false;
}
} else {
return false;
}
}
}
?>

上面的代码是一个简单的嵌套代码。 我们可以看到它是非常困难的,如果块结束哪里的身影。 为了更好的可读性,让我们修改的代码:
Listing5:代码片段,避免多级嵌套

function method_name (String arg_name) {
// ...
if (! is_writable ( $folder )) {
return false;
}
if (! $fp = fopen ( $file_location_path, 'w' )) {
return false;
}
if (! $stuff = extractSomeConditionalStuff ()) {
return false;
}
if (fwrite ( $fp, $stuff )) {
// ...
} else {
return false;
}
}

6,添加应有的注释

开发中,请确保你的源代码中有足够的行内注释。 这是一个应该遵守的标准做法。 这有助于深入分析代码,因为通常情况下,负责编码的人不会一直保持不变。 即使同一个人被要求在代码中进行一些简单的修改,行内的注释总是会有助于理解当时编写代码是用来做什么的。 为了在PHP中使用较好的注释标准,建议大家去查看一些标准的PHP文档包,例如phpDocumentor。

7,不要把PHPINFO()函数在网站根目录

phpinfo()函数是一个非常重要的功能,应小心使用。 使用此功能,任何人都可以看到服务器环境的详细信息。它最好始终放在
一个安全位置的文件中使用,一旦开发完成上线后,应该删除这段代码使用。

8,永远不要相信用户

如果您的应用程序涉及任何用户输入,务必要编写安全的代码以处理这种方式,因为它包含各种可能的输入。 想要避免程序被攻击注入或者破坏数据完整性,一定要验证过滤数据的格式。大家可以看下这篇文章《可怕的代码注入方式》

9,合理使用缓存机制

良好的编程方法总是建议使用缓存机制缓存帮助我们获得更好的性能。

在PHP的世界,缓存使用来实现:
Memcached的 —— 一个在使用小数据块存储键值对存 储。
APC —— 可选PHP缓存为开放的PHP操作码缓存
XCache —— 一种快速可靠的PHP操作码缓存
Zend Cache ? API,用于实现先进的高速缓存功能的集合。
eAcclerator ? 开源的缓存工具

10,避免复制已有变量

将预定义变量复制到具有较小的名字的局部变量不是一个好的编程习惯。 这对应用程序的性能产生不利影响。 让我们来看看下面的代码片段:
Listing6:复制已有变量

$desc = strip_tags($_POST['PHP description']);
echo $desc;

上面的代码的代码是复制一个变量为局部变量不必要的例子。 这是不是一个好的做法。同样的效果可以通过使用下面的代码来实现:

echo strip_tags($_POST['PHP description']);

11,使用框架

框架是大量的研究后开发的,因此,他们被证明是问题较少。 它们使我们的开发更便捷,因为它们提供成熟的解决方案。 在PHP中有很多可用的框架。 在开发过程中,你应该利用这些。 其中的一个框架,被广泛采用的是MVC或模型视图控制器。

结论:

编程规范指导我们更有效的开发代码。

遵循编程规范,确保应用程序的更好的性能。

正如在其他编程语言,要想创造出高质量的代码,PHP也需要遵循这种良好的编程规范。

PHP 相关文章推荐
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
May 28 PHP
php $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
Jun 21 PHP
php自定义函数之递归删除文件及目录
Aug 08 PHP
php MessagePack介绍
Oct 06 PHP
PHP判断远程图片或文件是否存在的实现代码
Feb 20 PHP
利用php下载xls文件(自己动手写的)
Apr 18 PHP
php中把美国时间转为北京时间的自定义函数分享
Jul 28 PHP
PHP中array_map与array_column之间的关系分析
Aug 19 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
Nov 05 PHP
PHP微信PC二维码登陆的实现思路
Jul 13 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
Nov 20 PHP
php中的buffer缓冲区用法分析
May 31 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
Sep 22 #PHP
php分页函数完整实例代码
Sep 22 #PHP
php中file_get_content 和curl以及fopen 效率分析
Sep 19 #PHP
PHP return语句另类用法不止是在函数中
Sep 17 #PHP
php使用$_POST或$_SESSION[]向js函数传参
Sep 16 #PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
Sep 16 #PHP
一个php生成16位随机数的代码(两种方法)
Sep 16 #PHP
You might like
Terran魔法科技
2020/03/14 星际争霸
说说JSON和JSONP 也许你会豁然开朗
2012/09/02 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
2014/12/19 Javascript
jQuery中:disabled选择器用法实例
2015/01/04 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
2015/03/12 Javascript
JS中生成随机数的用法及相关函数
2016/01/09 Javascript
js简单时间比较的方法
2016/08/02 Javascript
jsp 网站引入外部css或者js失效问题解决
2016/10/31 Javascript
jQuery实现表单动态添加与删除数据操作示例
2018/07/03 jQuery
Angular异步变同步处理方法
2018/08/13 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
Layui之table中的radio在切换分页时无法记住选中状态的解决方法
2019/09/02 Javascript
[02:54]DOTA2英雄基础教程 撼地者
2014/01/14 DOTA
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
python生成二维码的实例详解
2017/10/29 Python
Python实现两款计算器功能示例
2017/12/19 Python
python实现聊天小程序
2018/03/13 Python
pandas中DataFrame修改index、columns名的方法示例
2019/08/02 Python
python实现微信小程序用户登录、模板推送
2019/08/28 Python
Django模板语言 Tags使用详解
2019/09/09 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
Numpy实现卷积神经网络(CNN)的示例
2020/10/09 Python
Python中用xlwt制作表格实例讲解
2020/11/05 Python
解决使用Pandas 读取超过65536行的Excel文件问题
2020/11/10 Python
Aerosoles爱柔仕官网:美国舒软女鞋品牌
2017/07/17 全球购物
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
自我鉴定怎么写
2014/01/12 职场文书
委托公证书范本
2014/04/03 职场文书
保护环境倡议书范文
2014/05/13 职场文书
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
公司更名通知函
2015/04/24 职场文书
离婚起诉书范文2015
2015/05/19 职场文书
CSS3 制作的图片滚动效果
2021/04/14 HTML / CSS
spring项目中切面及AOP的使用方法
2021/06/26 Java/Android