V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
darasion
V2EX  ›  PHP

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

  •  
  •   darasion · 2012-11-06 18:51:21 +08:00 · 6236 次点击
    这是一个创建于 4434 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一、蛇吞大象
    if (is_array($params)) {
    foreach ($params as $param) {
    //...
    }
    }

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

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

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

    } else {

    }

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

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

    test_1: 1.2074031829834
    test_2: 1.2558000087738

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

    http://gist.github.com/4132644
    aveline
        15
    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
        16
    chisj  
       2012-11-23 21:03:38 +08:00
    我习惯这样的,因为感觉降低了一点复杂度,缩进太多的代码我看不习惯。。。。还有我喜欢用if处理异常而不是正常逻辑^.^,有和我一样的筒靴吗?
    if (!is_array($params)) {
    return;
    }
    foreach ($params as $param) {
    //...
    }
    IFoon
        17
    IFoon  
       2012-12-20 22:13:40 +08:00
    第一种比第二种性能高。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2721 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:21 · PVG 20:21 · LAX 04:21 · JFK 07:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.