10条PHP编程习惯


Posted in 面试题 onMay 26, 2014
1、使用单引号括起来的字符串
当使用双引号来括字符串时,PHP解释器会对其进行变量替换、转义等操作,如 “\n”。如果只想输出一个基本的字符串,用单引号会节省一些资源。当然,如果需要进行变量替换的,那就必须用双引号了。

2、字符串的输出
以下哪一条语句的运行速度最快?
print “Hi my name is $a. I am $b”$$
echo “Hi my name is $a. I am $b”$$
echo “Hi my name is “.$a.”. I am “.$b;
echo “Hi my name is “,$a,”. I am “,$b;
echo ‘Hi my name is ‘,$a,’. I am ‘,$b;
最后一条的运行速度是最快的。 print比echo要慢,在字符串中进行变量替换时会慢,而连接字符串要比用逗号连接来得慢,最后一句则是第一个习惯的体现。所以,不在字符串中进行变 量替换不仅会加快程序运行速度,也会让你的代码在任何语法高亮显示的编辑器中显得更为易懂(变量会被高亮显示出来)。很少人知道echo的参数可以用逗号 连接,且速度会比字符串连接要来得快。最后再用上第一个习惯,那这条语句就非常好了。

3、在数组索引中使用单引号
正如你在上面的测试题中所看到的,$x[sales]从严格意义上来说是错误的,索引应该被括起来,即$x[sales]。这是因为PHP会将 没有括起来的索引辨认为“裸”字符串,并把它解释为一个常量。当找不到该常量的定义时,才将其解释为一个字符串,所以这条语句才是可运行的。把索引括起来 可以省去这部分工作,如果将来正好要用这一字符串定义常量时也就不会有错误了。

4、不使用开始标志的缩写形式
你正在使用 这样的符号吗?“”是非常糟糕的符号,它会引起与XML解释器的冲突。而且一旦你发布了这些代码,那么使用者就必须修改php.ini文件来打 开对此符号的支持。所以实在没有理由去使用这种形式。用“
5、尽量不要使用正则表达式
在进行常规的字符串操作时,尽可能不要去使用正则表达式(preg和ereg系列函数)。str_replace函数要比preg_replace快得多,甚至 strtr函数也要比str_replace来得快。省去这些不必要的麻烦吧,你的老板会感谢你的。

6、不要在循环声明中使用函数
这个问题不单单出现在PHP中,你可以在其他语言的代码中经常看到:
差:for($i=0;$i 好:$count=count($array);for($i=0;$i& lt;$count;$i++){…}
如果在循环声明中使用了 count函数,那每次循环都会调用一次。如果循环次数很多,会浪费非常多的时间。

7、不要使用 register_globals和magic quotes
老版本的PHP在安装时会默认打开这两个功能,这会引起安全漏洞、编程错误及其他的问题,如只有用户输入了数据时才会创建变量等。如今这两个功 能都被舍弃了,每个程序员都应该避免使用。

8、一定要对变量进行初始化(这 里的“初始化”指的是“声明”)
当需要没有初始化的变量,PHP解释器会自动创建一个变量,但依靠这个特性来编程并不是一 个好主意。这会造成程序的粗糙,或者使代码变得另人迷惑,因为你需要探寻这个变量是从哪里开始被创建的。另外,对一个没有初始化的变量进行递增操作要比初 始化过的来得慢。所以对变量进行初始化会是个不错的主意。

9、对代码进行注释
这个问题已经提过很多次了,但再多次也 不够。我知道有些地方是不聘用不对代码进行注释的程序员的。我在前一次工作面试后和副总、面试官一起浏览我写的代码,当他们对我所做的代码注释印象深刻, 还了解了一下我的这一习惯。一天之后,我得到了这个工作。
我知道有些自称为PHP大师的人声称自己的代码写得很好,不需要添加什么注 释。在我看来,这些人都是垃圾。学一写注释的规范和技巧,熟悉一下phpDocumentor或Doxygen之类的注释辅助软件,都是值得的。

10、遵循一个编程规范
关于这一点,是你需要在面试中询问你潜在的老板的,问问他们正在使用什么编程规范。PEAR?Zend?内部规范? 要提及你正在使用的编程规范,不管是你自己创建的,还是目前普遍流行的一种。对于PHP这种松松垮垮的语言来说,如果没有一个好的编程规范,那么那些代码 就会看起来想一堆垃圾。发臭的,令人作呕的垃圾。一些基本的规范包括空格规范、打括号匹配、命名风格等。这对任何一个追求高质量的代码的人来说都是必须 的。
有人说:“我讨厌你的4个空格的缩进。”我要说,什么?用4个空格来缩进?这比用制表符过占用3个字符的空间。更重要的是,只要 是使用比记事本高级的编辑器,你可以自定义制表符的缩进值。所以每个程序员都可以以其最习惯的方式来看代码。可以时设置为4,也可以设置为0(如果你是个 受虐狂)。反正我不在乎,但你就是不能用空格来缩进!

Tags in this post...

面试题 相关文章推荐
JAVA的事件委托机制和垃圾回收机制
Sep 07 面试题
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
Mar 14 面试题
JMS中Topic和Queue有什么区别
May 15 面试题
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
Sep 11 面试题
static全局变量与普通的全局变量有什么区别
May 27 面试题
Sony C++笔试题
Mar 10 面试题
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
May 23 面试题
请写出 float x 与"零值"比较的 if 语句
Jan 04 面试题
如何选择使用结构还是类
May 30 面试题
如何利用cmp命令比较文件
Apr 11 面试题
linux面试题参考答案(10)
Nov 04 面试题
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
Jun 20 面试题
PHP面试题-$message和$$message的区别
Dec 08 #面试题
比较基础的php面试题及答案-填空题
Apr 26 #面试题
比较基础的php面试题及答案-编程题
Oct 14 #面试题
PHP中如何创建和修改数组
May 02 #面试题
PHP面试题集
Dec 18 #面试题
一些PHP的面试题
May 06 #面试题
几道PHP面试题
Apr 14 #面试题
You might like
php smarty函数扩展
2010/03/15 PHP
thinkPHP模型初始化实例分析
2015/12/03 PHP
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
慎用 somefunction.prototype 分析
2009/06/02 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
使用jsonp完美解决跨域问题
2014/11/27 Javascript
举例说明JavaScript中的实例对象与原型对象
2016/03/11 Javascript
JS留言功能的简单实现案例(推荐)
2016/06/23 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
2016/07/12 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
2017/01/26 Javascript
深入研究React中setState源码
2017/11/17 Javascript
10个经典的网页鼠标特效代码
2018/01/09 Javascript
angularJS实现动态添加,删除div方法
2018/02/27 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
jQuery选择器之基本过滤选择器用法实例分析
2019/02/19 jQuery
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
微信小程序调用wx.getImageInfo遇到的坑解决
2020/05/31 Javascript
python通过ElementTree操作XML获取结点读取属性美化XML
2013/12/02 Python
Python中处理字符串之isalpha()方法的使用
2015/05/18 Python
python文件写入write()的操作
2019/05/14 Python
python3.6 如何将list存入txt后再读出list的方法
2019/07/02 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
2019/07/23 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
Python 发送邮件方法总结
2020/08/10 Python
基于python实现简单网页服务器代码实例
2020/09/14 Python
Python 随机按键模拟2小时
2020/12/30 Python
html5 Canvas画图教程(5)—canvas里画曲线之arc方法
2013/01/09 HTML / CSS
给校长的建议书500字
2014/05/15 职场文书
机械操作工岗位职责
2014/08/08 职场文书
关于读书的演讲稿500字
2014/08/27 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书
mysql5.6主从搭建以及不同步问题详解
2021/12/04 MySQL
解决linux下redis数据库overcommit_memory问题
2022/02/24 Redis
Java实现注册登录跳转
2022/06/16 Java/Android