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

2012-11-06 18:51:21 +08:00
 darasion
一、蛇吞大象
if (is_array($params)) {
foreach ($params as $param) {
//...
}
}

二 、蚂蚁啃骨头
$params = is_array($params) ? $params : array();
foreach ($params as $param) {
//...
}
6231 次点击
所在节点    PHP
17 条回复
enj0y
2012-11-06 19:25:44 +08:00
see it used for what and think about which.
azoon
2012-11-06 19:26:55 +08:00
我用第一种。第二种有人这样写?
sethverlo
2012-11-06 19:40:56 +08:00
第一种我喜欢把 {} 都另起一行……
TheOnly92
2012-11-06 19:43:54 +08:00
有些时候我会这么写
foreach ((array) $params as $param) { ... }

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

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

} else {

}

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

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

test_1: 1.2074031829834
test_2: 1.2558000087738

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

http://gist.github.com/4132644
aveline
2012-11-23 03:38:29 +08:00
忘了补充下 ... 测试环境是

"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 21:03:38 +08:00
我习惯这样的,因为感觉降低了一点复杂度,缩进太多的代码我看不习惯。。。。还有我喜欢用if处理异常而不是正常逻辑^.^,有和我一样的筒靴吗?
if (!is_array($params)) {
return;
}
foreach ($params as $param) {
//...
}
IFoon
2012-12-20 22:13:40 +08:00
第一种比第二种性能高。

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

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

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

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

© 2021 V2EX