说在前面
代码优化是一个持续不断的过程,养成一个好的编码习惯,善用一些PHP的语法糖,让我们的代码看起来更好维护更不容易出错,这本身就是一种优化。还有一种就是对代码的可读性再做一次优化,让代码更好维护。
if的使用技巧
if的使用技巧之 “给定初始值”
来看一段代码
1 | if(1 == $orderState){ |
给定初始值之后,我们可以写成这样,少了一层else
1 | $orderTitle = '已售出'; |
if的使用技巧之 “用 && 替换 if”
1 | if(!isset($newpwd[6])){ |
可以替换成
1
!isset($newpwd[6]) && $message = '密码长度不足';
if的使用技巧之“三元运算符替换if”
1 | if(empty($_post['action'])){ |
也可以替换成
1 | $action = (empty($_post['action']))? 'default' : $_post['action']; |
也可以把三元运算符简写成
1 | $action = $_post['action']?:'default'; |
if的使用技巧之 “去掉多此一举的if”
这个函数是判断一个年份是否是闰年,如果是返回ture否则返回false
1 | function isLeapYear($year){ |
类似于这种判断一个条件是否为真,为真返回ture为假返回false的时候,我们可以直接返回这个条件就可以了
1 | function isLeapYear($year){ |
改进“else if”
1 | if('你'==$sortname){ |
可以用switch来改造多层的判断
1 | switch($sortname){ |
表驱动法替代“else if”
上面那个例子用switch似乎让代码变多了,但看起来更简洁了,如果你还不爽,那下面。。。
在PHP里面数组可以理解为一个hash表
1 | $sortTable = [ |
循环语句的几个要点
要写无限循环时,用while(true)表示无限循环,别用for。
特定情况下(发邮件、采集网页)要加延时(sleep)
循环体内尽可能不用函数或更消耗资源的调用
foreach代替while和for循环(PHP)
避免空循环
只做一件事,尽可能短,控制在50行以内
循环嵌套限制在3曾以内
使用更精悍短小的代码
函数的最佳最大长度时50-150行代码
函数参不超过7个
短小函数更容易理解也方便修改
只做一件事情的函数更易于复用
短小的函数测试更方便
中间结果赋值给变量
$str = ‘this_is_a_test’;
$humpstr = implode(‘’,array_map(‘ucfirst’,explode(‘_’,$str)));
你觉得这样写好不好呢?我以为这样很cool,一行就搞定,实际上这样写并不好,乍一看不好理解,另外还不好调试。那怎么改造这种代码呢?把中间结果赋值给变量
1 | $str = 'this_is_a_test'; |
复杂的逻辑表达式做成布尔函数
1 | if(!$hasone && 1==$ddisfirst && ''==$litpic &&empty($litpicname)){ |
你像这样四个条件并在一起满足的条件下才会执行下面的代码,是不是会很难理解,所以复杂的逻辑表达式做成布尔函数,就是把它给切开
1 | $emptyPic = ( ''==$litpic &&empty($litpicname); |
永远不要复制粘贴雷同的代码
相同的代码放在一起让以后修改更轻松
可以让全局的统计和过滤器等实现方便
可复用的带参函数是解决雷同代码的好方法