XCache 一种快速可靠的PHP操作码缓存
1,错误报告开启
错误报告是在PHP中一个非常有用的功能,应同时在开发阶段启用。 这可以帮助我们确定我们的代码中的问题。 最常用的功能是“E_ALL”,这有助于我们发现所有的警告和严重错误。 必须指出的是,我们把我们的代码投入上线前,我们应该关闭这个功能提示,否则会在浏览器上的暴漏所有潜在错误及警告。
2,使用DRY原则
‘Do not Repeat Yourself’,DRY原则指的是不要重复你的代码.。 这个概念是一个非常有用的编程概念,可硬应用在任何编程语言,如Java,C#或PHP均可以。 使用DRY原则,确保我们在程序中没有冗余的代码。
违反 DRY 原则的解决方案通常被称为 WET,指代“write everything twice”,我们写的相同功能的代码会出现多次以上,别大家戏称是喜欢打字。
让我们看看到下面的代码:
Listing1:
WET代码方式: 1 $mysql = mysql_connect ( 'localhost', 'mysqladmin_uid', 'mysqladmin_pwd'); 2 mysql_select_db( 'DB_NAME' ) or die( Sorry !! No database selected!);
下面使用DRY 原则优化代码:
1 $db_host = ' localhost '; 2 $db_user = ' mysqladmin_uid '; 3 $db_password = ' mysqladmin_pwd '; 4 $db_database = ' DB_NAME '; 5 $mysql = mysql_connect($db_host, $db_user, $db_password); 6 mysql_select_db($db_database);
3,适当的使用缩进及空格
在使用任何一种编程语言编写代码时,必须确保代码在需要的地方提供在必要适当的缩进和足够的空格。 以增加了代码的可读性,用更有效的方式管理代码。
4,使用有意义和一致的命名标准
正如任何编程语言,PHP的老兵还建议我们遵循有意义的命名标准。 我们有两个主要方式在实现这个要求:
A.驼峰式
在这种方法中,第一个字母是小写,每一个单词的第一个字母其后以大写。
Listing2: 1 public class MyClass { 2 public void methodName(String argName) { 3 } 4 } B.下划线式
在这种方法中,我们把每两个词之间的下划线(“_”)。 使用这种方法时,代码可以被修改如下:
Listing3:使用下划线代码片段 1 public class MyClass { 2 public void method_name(String arg_name) { 3 } 4 }
5,避免深层嵌套
使用任何开发语言,多级嵌套降低了代码的可读性。 任何开发者都应应避免使用深层嵌套。
Listing4:代码片段具有多级嵌套 01 02 class MyClass { 03 public function method_name($arg_name) { 04 if (is_writable ( $folder )) { 05 if ($fp = fopen ( $file_location_path, 'w' )) { 06 if ($stuff = extractSomeConditionalStuff ()) { 07 if (fwrite ( $fp, $stuff )) { 08 // ... 09 } else { 10 return false; 11 } 12 } else { 13 return false; 14 } 15 } else { 16 return false; 17 } 18 } else { 19 return false; 20 } 21 } 22 } 23 ?> 上面的代码是一个简单的嵌套代码。 我们可以看到它是非常困难的,如果块结束哪里的身影。 为了更好的可读性,让我们修改的代码:
Listing5:代码片段,避免多级嵌套 01 function method_name (String arg_name) { 02 // ... 03 if (! is_writable ( $folder )) { 04 return false; 05 } 06 if (! $fp = fopen ( $file_location_path, 'w' )) { 07 return false; 08 } 09 if (! $stuff = extractSomeConditionalStuff ()) { 10 return false; 11 } 12 if (fwrite ( $fp, $stuff )) { 13 // ... 14 } else { 15 return false; 16 } 17 }
6,添加应有的注释
开发中,请确保你的源代码中有足够的行内注释。 这是一个应该遵守的标准做法。 这有助于深入分析代码,因为通常情况下,负责编码的人不会一直保持不变。 即使同一个人被要求在代码中进行一些简单的修改,行内的注释总是会有助于理解当时编写代码是用来做什么的。 为了在PHP中使用较好的注释标准,建议大家去查看一些标准的PHP文档包,例如phpDocumentor。
7,不要把PHPINFO()函数在网站根目录
phpinfo()函数是一个非常重要的功能,应小心使用。 使用此功能,任何人都可以看到服务器环境的详细信息。它最好始终放在
一个安全位置的文件中使用,一旦开发完成上线后,应该删除这段代码使用。
8,永远不要相信用户
如果您的应用程序涉及任何用户输入,务必要编写安全的代码以处理这种方式,因为它包含各种可能的输入。 想要避免程序被攻击注入或者破坏数据完整性,一定要验证过滤数据的格式。大家可以看下这篇文章《可怕的代码注入方式》
9,合理使用缓存机制
良好的编程方法总是建议使用缓存机制缓存帮助我们获得更好的性能。
在PHP的世界,缓存使用来实现:
Memcached的 —— 一个在使用小数据块存储键值对存 储。
APC —— 可选PHP缓存为开放的PHP操作码缓存
XCache —— 一种快速可靠的PHP操作码缓存
Zend Cache – API,用于实现先进的高速缓存功能的集合。
eAcclerator – 开源的缓存工具
10,避免复制已有变量
将预定义变量复制到具有较小的名字的局部变量不是一个好的编程习惯。 这对应用程序的性能产生不利影响。 让我们来看看下面的代码片段:
Listing6:复制已有变量 1 $desc = strip_tags($_POST['PHP description']); 281064151 echo $desc;
上面的代码的代码是复制一个变量为局部变量不必要的例子。 这是不是一个好的做法。同样的效果可以通过使用下面的代码来实现:
1 echo strip_tags($_POST['PHP description']);
11,使用框架
框架是大量的研究后开发的,因此,他们被证明是问题较少。 它们使我们的开发更便捷,因为它们提供成熟的解决方案。 在PHP中有很多可用的框架。 在开发过程中,你应该利用这些。 其中的一个框架,被广泛采用的是MVC或模型视图控制器。
结论:
编程规范指导我们更有效的开发代码。
遵循编程规范,确保应用程序的更好的性能。
正如在其他编程语言,要想创造出高质量的代码,PHP也需要遵循这种良好的编程规范
XCache 一种快速可靠的PHP操作码缓存的更多相关文章
- 一种快速查询多点DS18B20温度的方法(转)
源:http://hi.baidu.com/james_xiao/item/79b961c90623093e45941623 一种快速查询多点DS18B20温度的方法 引言 为了满足实时性要 ...
- 快速可靠网络传输协议 KCP(转)
KCP 是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低30%-40%,且最大延迟降低三倍的传输效果.纯算法实现,并不负责底层协议(如UDP)的收发,需要使用者自己定 ...
- linux几种快速清空文件内容的方法
linux几种快速清空文件内容的方法 几种快速清空文件内容的方法: $ : > filename #其中的 : 是一个占位符, 不产生任何输出. $ > filename $ echo & ...
- 一种快速求fibonacci第n个数的算法
利用动态规则的思路,摒弃传统的递归做法,可以得到一种快速的求fibonacci第n个数的算法: ''' 求第n(从1开始)位fibonacci数 fibonacci数列前两位为0, 1. 后面每一位数 ...
- Socket.IO 1.0 正式发布,快速可靠的实时引擎
Socket.IO 是目前 Web 领域最火的实时引擎,用于实现基于事件的双向实时的通信.它适用于任何平台,浏览器或设备,专注于可靠性和速度.您可以将数据推送到客户端,并获得实时的计数,日志或图表. ...
- Spark入门,概述,部署,以及学习(Spark是一种快速、通用、可扩展的大数据分析引擎)
1:Spark的官方网址:http://spark.apache.org/ Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL.Spark Streaming.Graph ...
- Pugixml一种快速解析XML文件的开源解析库
Pugixml是一个轻量级的C++ XML开源解析库,DOM形式的解析器.接口和丰富的遍历和修改操作,快速的解析,此外支持XPath1.0实现数据查询,支持unicode编码: 使用Pugixml可通 ...
- 实现一种快速查找Richedit中可见区域内OLE对象的方法
Richedit是一个OLE容器,使用Richedit来显示IM聊天内容时,通常使用OLE对象来实现在Richedit中播放表情动画. 触发表情的绘制有两种途径: 1.来自Richedit的刷新消息. ...
- 几种快速傅里叶变换(FFT)的C++实现
链接:http://blog.csdn.net/zwlforever/archive/2008/03/14/2183049.aspx一篇不错的FFT 文章,收藏一下. DFT的的正变换和反变换分别为( ...
随机推荐
- python中,如何将多行进行输出,同时将行尾的换行符去掉
需求说明: 比如我要输出字符串的常量,字符串常量要输出多行,该怎么解决呢 操作过程: 1.可以通过三引号(""" .... """)将要输出 ...
- 第五种方式,python使用组合来添加类方法和属性(二),以selenium的webdriver为例
组合优点多,但经常比继承需要额外的代码. 上一篇是 介绍装饰器.继承.元类.mixin,四种給类动态添加类属性和方法的四种方式. 此篇介绍直接把被组合的类的属性直接加入到类里面,前面的四个例子很简单, ...
- [转] NGUI自适应
很多做移动终端开发的童鞋都可能遇到一个问题,就是如何自适应其实NGUI已经能帮我们实现,下面就告诉大家怎么整这个自适应.1,create a new ui 2,uiroot下添加uipanel(scr ...
- 谈谈入门iOS的经验吧
前言 近期忙完项目比較闲,想写一篇博客来分享一些自学iOS的心得体会,希望对迷茫的你有所帮助.博主非科班出身,一些计算机术语上的不专业欢迎大家指正. 我是学微电子的.大四的时候找了一家深圳的专业对口的 ...
- ios开发之--WKWebView的使用
WKWebView是ios 8 出来的,是为了解决UIWebView卡慢,占用内存过大的问题. 在以往时候,如果用UIWebView加载加载网页的时候,卡慢现象会很严重,有时候往往会卡到一个页面无法动 ...
- java中类相关注意事项
下面default类就是默认修饰符的类 1.Java中调用类中属性或方法(不管是否静态属性或方法)都要在类的方法中调用,虽然这个太基础,但今天想在类中调用静态类的静态变量,不能调用: 2.Java调用 ...
- MySQL on Linux 部署手册
1. 背景 MySQL为开源数据库,因此可以基于源码实现安装.基于源码安装有更多的灵活性.也就是说我们可以针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码,根据不同的软件平台环境调整相关的编 ...
- gcc的选项
-g: 是一个编译选项,即在源代码编译的过程中起作用,让gcc把更多调试信息(也就包括符号信息)收集起来并将存放到最终的可执行文件内. -rdynamic: 却是一个 连接选项 ,它将指示连接器把 ...
- 《计算机图形学》2.1.4 彩色CRT监视器
CRT监视器利用能发射不同颜色光的荧光层的组合来显示彩色图形.不同荧光层的发射光组合起来,可以生成一种按其比例而定的可见颜色. 显示彩色图形的一种方法是在屏幕上涂上多层不同的荧光粉.发射颜色由电子束在 ...
- codeforces水题100道 第四题 Codeforces Round #105 (Div. 2) A. Insomnia cure (math)
题目链接:http://www.codeforces.com/problemset/problem/148/A题意:求1到d中有多少个数能被k,l,m,n中的至少一个数整出.C++代码: #inclu ...