V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
whatisnew
V2EX  ›  PHP

有人认真看过 slim 的代码质量吗?

  •  
  •   whatisnew · Jun 1, 2016 · 8884 views
    This topic created in 3625 days ago, the information mentioned may be changed or developed.

    我就不多说了,能写出这种代码的人,还有人推崇。。。

    https://github.com/slimphp/Slim/blob/2.x/Slim/Log.php#L308

    if (!isset(self::$levels[$level])) {
        throw new \InvalidArgumentException('Invalid log level supplied to function');
    } else if ($this->enabled && $this->writer && $level <= $this->level) {
    ....
    

    throw new \InvalidArgumentException

    -> then ->

    else if ?

    然后,该作者的 slim3 居然还是高度遵循 fig PSR ,我去。。。

    32 replies    2016-06-08 17:25:12 +08:00
    justanding
        1
    justanding  
       Jun 1, 2016
    不可饶恕,居然有一个 else if
    mahone3297
        2
    mahone3297  
       Jun 1, 2016
    @justanding 请教, else if 的问题是?
    manhere
        3
    manhere  
       Jun 1, 2016
    记得这样可以少写一对大括号,可以用的吧?
    bramblex
        4
    bramblex  
       Jun 1, 2016
    烂得在能够接受的程度内就懒得造轮子
    notgod
        5
    notgod  
       Jun 1, 2016
    按我的理解
    推崇的本身 并不是代码写的好不好 而是这种造物的精神 以及造出来以后开源给大家使用
    避免重复造轮子的问题

    在这个基础上 没人天生什么都会 一次性就能写好
    都是慢慢去完善 根据个人喜好 一种逻辑 10 个人可能有 100 种写法
    没有必要强加自己的逻辑 认为自己一定是正确的打开方式

    仅仅是个人喜好而已
    比如我 就喜欢做简单处理
    强迫症 别人的代码 缩进混淆了我都要修正 不然不舒服
    zsx
        6
    zsx  
       Jun 1, 2016
    @mahone3297 这里 throw 出来后后续不会执行, else 是多余的,直接 if 就好了。
    yzyzsun
        7
    yzyzsun  
       Jun 1, 2016
    看标题还以为是说 Ruby 的 Slim ……
    anewg
        8
    anewg  
       Jun 1, 2016
    @zsx throw 要上面的 if 成立才会进入啊, if 不成立就判断接下来的 else if ,跟直接 if 有什么关系?
    BOYPT
        9
    BOYPT  
       Jun 1, 2016
    看来我跟楼主水平差距太大,我硬是没看出问题在哪。
    不过 3.x 的 slim 已经不用他自己的 Log 模块了,扔了很多包袱给其他包。
    raincious
        10
    raincious  
       Jun 1, 2016
    @anewg

    他的意思是可以直接

    if (!isset(self::$levels[$level])) {
    throw new \InvalidArgumentException('Invalid log level supplied to function');
    }

    if (.....

    不过其实没什么,不影响稳定性,后面重构的时候修改下就行了,并不需要惊讶。
    zsx
        11
    zsx  
       Jun 1, 2016
    @anewg 我解释错了……上面 if 成立就不会到 elseif 而且还 throw 了;如果把 elseif 改成 if 也不会有问题,上面 if 不成立就会到 elseif ,和直接 if 也没区别。
    Slienc7
        12
    Slienc7  
       Jun 1, 2016
    @zsx
    明显 else if 更优雅。
    audi
        13
    audi  
       Jun 1, 2016
    lyf362345
        14
    lyf362345  
       Jun 1, 2016
    不知道这个是 slim2 还是 slim3, 我看过一部分 slim2 代码, 槽点更多.
    justanding
        15
    justanding  
       Jun 1, 2016
    @mahone3297 PSR2 里面是“应该使用关键词 elseif 代替所有 else if ,以使得所有的控制关键字都像是单独的一个词。”
    GG668v26Fd55CP5W
        16
    GG668v26Fd55CP5W  
       Jun 1, 2016 via iPhone
    意思是 else if 多加了一个空格,所以问题很大?
    shiny
        17
    shiny  
    PRO
       Jun 1, 2016
    正是提 pull request 好机会呀
    orvice
        18
    orvice  
       Jun 1, 2016
    mahone3297
        19
    mahone3297  
       Jun 1, 2016
    @zsx 怎么会多余。。。又不一定进 if 流程
    看了你后面的解释,还是没明白。。。

    @justanding 原来如此,有可能是你说的这个。
    zsx
        20
    zsx  
       Jun 1, 2016
    @mahone3297 所以我貌似直接忽略了 PSR (然后 get 错点了(
    hylent
        21
    hylent  
       Jun 1, 2016 via Android
    psr 是一个问题
    另外 elseif 本身不需要 直接 if 不就可以了么
    反正我个人的习惯 很少用 elseif
    if 要么抛出异常 要么 return 跳出函数 主体流程都是保持在一个缩进里的 这样看起来更舒服
    对于实在要用 elseif 的 我宁可转为 switch
    alexapollo
        22
    alexapollo  
       Jun 1, 2016
    这个槽点明显不正确吧?

    if -> else if 这样的逻辑可以做著名的的火车选路,可以做更好的跳转的。运行起来会比多个 if 更快。
    arakashic
        23
    arakashic  
       Jun 2, 2016
    除非 code style 上有要求,要不然这个 case 里面
    if () {
    throw
    } else if {
    }

    if () {
    throw
    }
    if {
    }
    有啥区别?不能光凭这一点就吐槽“能写出这种代码的人,还有人推崇。。。”吧。
    xiamx
        24
    xiamx  
       Jun 2, 2016
    没啥不好,这种写法完整的描述了一个 state transition
    qhgongzi
        25
    qhgongzi  
       Jun 2, 2016
    确实是不用 else if ,增加了理解难度,可以在后面直接 if
    but....这么点小瑕疵,就上升到"能写出这种代码的人,还有人推崇。。。", 楼主酸味真浓。
    要不楼主亮亮你的代码,看看有多少值得推崇的好代码
    whatisnew
        26
    whatisnew  
    OP
       Jun 2, 2016
    @qhgongzi 这里只是举个典型的例子,你可以看看其他的代码,比如 Slim.php 之类的,随手翻一下
    Slienc7
        27
    Slienc7  
       Jun 2, 2016
    @whatisnew 能贴一下自己的代码让我们学习一下吗?
    hanzhao
        28
    hanzhao  
       Jun 2, 2016
    我也习惯这样写 有问题吗?
    ioven
        31
    ioven  
       Jun 6, 2016
    有其他小巧好用的逛街推荐不?
    jeffw
        32
    jeffw  
       Jun 8, 2016
    帖一篇王垠博客的文章,直接拉到页面最后面开始看,第 2 条。
    http://www.yinwang.org/blog-cn/2013/03/15/language-design-mistake1

    然后再读读他的这篇文章,我觉得他说的是很有道理的。
    http://www.yinwang.org/blog-cn/2015/11/21/programming-philosophy
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   916 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 73ms · UTC 23:00 · PVG 07:00 · LAX 16:00 · JFK 19:00
    ♥ Do have faith in what you're doing.