槽吐吐,最近在看一本叫《代码简洁之道》的书,书中讲了如何让自己的代码变得容易读懂,受益匪浅。有兴趣的朋友可以看看。
phper很少使用异常,即时是公司里的大牛,也不见得会使用异常。更多情况下,异常仅仅被当作error code的另外一个实现体而已。我记得我在前面的博客里还说到过异常,貌似木有人支持啊。
想象一下:一个代码里出现了如下情况:
[php]
if(($retcode = fun1()) == 0){
$html = hello,world;
if(($retcode = fun2()) == 0){
if(($retcode = fun3()) == 0){
}else{
//出错了
}
}else{
//出错了
}
}else{
//出错了
}
if(($retcode = fun1()) == 0){
$html = hello,world;
if(($retcode = fun2()) == 0){
if(($retcode = fun3()) == 0){
}else{
//出错了
}
}else{
//出错了
}
}else{
//出错了
}
上面的代码,熟悉么?之前看discuz的源码时,有一段代码有类似的结构,这样写,代价确实很大,尤其是后面的人来读这段代码的时候。我们确实没有重构的习惯,使用异常重构,可以很好解决这个问题
[php]
try{
fun1();
fun2();
fun3();
}catch(exception_func_1 $e){
//错误处理
}catch(exception_func_2 $e){
//错误处理
}catch(exception_func_3 $e){
//错误处理
}
array(
'abc' => '2345'
)
);
//输出到文件的内容是:
{
return array(
0 => 'abc',
1 => array(
'abc' => '2345'
)
);
}
'abc',
1 => array(
'abc' => '2345'
)
);
//输出到文件的内容是:
{
return array(
0 => 'abc',
1 => array(
'abc' => '2345'
)
);
}
然后,下一个文件include后是:
[php]
$a = include(file.php);
$a = include(file.php);
它就拥有了这个数据了。
具体什么场合下用到,我们将内存中的数据放到硬盘中,除了serialize外,这也是一种方便的做法,因为不需要unserialize。不好的一点是:没法对对象、句柄做操作。
我是这么写的:
[php]
$v){
if(is_string($k)){
$k = \{$k}\;
}
$str .= $pfx . {$k} => . $this->var2str($v, $pfx) . ,\n;
}
$str .= $pfx . );
}elseif(is_int($var) || is_float($var)){
$str = {$var};
}elseif(is_string($var)){
$str = \{$var}\;
}
return $str;
}
}
$v){
if(is_string($k)){
$k = \{$k}\;
}
$str .= $pfx . {$k} => . $this->var2str($v, $pfx) . ,\n;
}
$str .= $pfx . );
}elseif(is_int($var) || is_float($var)){
$str = {$var};
}elseif(is_string($var)){
$str = \{$var}\;
}
return $str;
}
}
http://www.bkjia.com/phpjc/477914.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/477914.htmltecharticle槽吐吐,最近在看一本叫《代码简洁之道》的书,书中讲了如何让自己的代码变得容易读懂,受益匪浅。有兴趣的朋友可以看看。 phper很少...