两种代码风格, 你喜欢哪一种?

2012 年 11 月 6 日
 darasion
一、蛇吞大象
if (is_array($params)) {
foreach ($params as $param) {
//...
}
}

二 、蚂蚁啃骨头
$params = is_array($params) ? $params : array();
foreach ($params as $param) {
//...
}
6915 次点击
所在节点    PHP
17 条回复
enj0y
2012 年 11 月 6 日
see it used for what and think about which.
azoon
2012 年 11 月 6 日
我用第一种。第二种有人这样写?
sethverlo
2012 年 11 月 6 日
第一种我喜欢把 {} 都另起一行……
TheOnly92
2012 年 11 月 6 日
有些时候我会这么写
foreach ((array) $params as $param) { ... }

但是当你必须这么做代码很容易出问题,
最好能保证 $params 肯定是 array()
tux
2012 年 11 月 6 日
if (is_array($params))
{
foreach ($params as $param)
{
//...
}
}
我这样算什么啊
enj0y
2012 年 11 月 6 日
第一种如果后面没有else逻辑,会只有$params为数组时才执行。第二种会将非数组的$params重置为空数组,有可能会。。。。
Sunyanzi
2012 年 11 月 6 日
我的方式 ... 和第一种差不多是一个道理 ...

if ( is_array( $params ) ) foreach ( $params as $param ) {

} else {

}

顾及简洁以及减少性能浪费 ... 避免毫无意义的赋值和 foreach ...
imcj
2012 年 11 月 7 日
var i = 0, size = params.length;
for ( ; i < size; i++ ) {
}
fmfsaisai
2012 年 11 月 7 日
对于数组这种大数据尽量减少只用三元式:
http://www.laruence.com/2011/11/04/2258.html
binjoo
2012 年 11 月 7 日
有时候的简洁,看着更加蛋疼。
darklowly
2012 年 11 月 22 日
@Sunyanzi 这个是玩小聪明的技巧。一般是适得其反。
mygoare
2012 年 11 月 23 日
第二种 可能foreach空数组?
mygoare
2012 年 11 月 23 日
好吧,我二了。。。sorry
aveline
2012 年 11 月 23 日
以前很喜欢第一种 ... 不过看起来是很漂亮 ... 但是执行起来 ... 只能呵呵了 ...

简单写了个测试脚本 ... 每种调用 200000 次, 结果如下:

test_1: 1.2074031829834
test_2: 1.2558000087738

明显第一种性能更好 ...

http://gist.github.com/4132644
aveline
2012 年 11 月 23 日
忘了补充下 ... 测试环境是

"PHP 5.3.15 with Suhosin-Patch (cli) (built: Aug 24 2012 17:45:44)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
with Xdebug v2.1.3, Copyright (c) 2002-2012, by Derick Rethans"
chisj
2012 年 11 月 23 日
我习惯这样的,因为感觉降低了一点复杂度,缩进太多的代码我看不习惯。。。。还有我喜欢用if处理异常而不是正常逻辑^.^,有和我一样的筒靴吗?
if (!is_array($params)) {
return;
}
foreach ($params as $param) {
//...
}
IFoon
2012 年 12 月 20 日
第一种比第二种性能高。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/51889

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX