我就不多说了,能写出这种代码的人,还有人推崇。。。
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 ,我去。。。
1
justanding 2016-06-01 17:29:42 +08:00
不可饶恕,居然有一个 else if
|
2
mahone3297 2016-06-01 17:36:39 +08:00
@justanding 请教, else if 的问题是?
|
3
manhere 2016-06-01 17:41:13 +08:00
记得这样可以少写一对大括号,可以用的吧?
|
4
bramblex 2016-06-01 17:44:49 +08:00
烂得在能够接受的程度内就懒得造轮子
|
5
notgod 2016-06-01 17:45:07 +08:00
按我的理解
推崇的本身 并不是代码写的好不好 而是这种造物的精神 以及造出来以后开源给大家使用 避免重复造轮子的问题 在这个基础上 没人天生什么都会 一次性就能写好 都是慢慢去完善 根据个人喜好 一种逻辑 10 个人可能有 100 种写法 没有必要强加自己的逻辑 认为自己一定是正确的打开方式 仅仅是个人喜好而已 比如我 就喜欢做简单处理 强迫症 别人的代码 缩进混淆了我都要修正 不然不舒服 |
6
zsx 2016-06-01 17:50:25 +08:00
@mahone3297 这里 throw 出来后后续不会执行, else 是多余的,直接 if 就好了。
|
7
yzyzsun 2016-06-01 18:00:29 +08:00
看标题还以为是说 Ruby 的 Slim ……
|
9
BOYPT 2016-06-01 18:12:22 +08:00
看来我跟楼主水平差距太大,我硬是没看出问题在哪。
不过 3.x 的 slim 已经不用他自己的 Log 模块了,扔了很多包袱给其他包。 |
10
raincious 2016-06-01 18:15:26 +08:00
@anewg
他的意思是可以直接 if (!isset(self::$levels[$level])) { throw new \InvalidArgumentException('Invalid log level supplied to function'); } if (..... 不过其实没什么,不影响稳定性,后面重构的时候修改下就行了,并不需要惊讶。 |
11
zsx 2016-06-01 18:15:56 +08:00
@anewg 我解释错了……上面 if 成立就不会到 elseif 而且还 throw 了;如果把 elseif 改成 if 也不会有问题,上面 if 不成立就会到 elseif ,和直接 if 也没区别。
|
13
audi 2016-06-01 18:24:19 +08:00
|
14
lyf362345 2016-06-01 18:26:32 +08:00
不知道这个是 slim2 还是 slim3, 我看过一部分 slim2 代码, 槽点更多.
|
15
justanding 2016-06-01 19:22:29 +08:00
@mahone3297 PSR2 里面是“应该使用关键词 elseif 代替所有 else if ,以使得所有的控制关键字都像是单独的一个词。”
|
16
falcon05 2016-06-01 19:34:12 +08:00 via iPhone
意思是 else if 多加了一个空格,所以问题很大?
|
17
shiny 2016-06-01 19:37:11 +08:00
正是提 pull request 好机会呀
|
19
mahone3297 2016-06-01 21:25:18 +08:00
|
20
zsx 2016-06-01 21:38:15 +08:00
@mahone3297 所以我貌似直接忽略了 PSR (然后 get 错点了(
|
21
hylent 2016-06-01 21:46:44 +08:00 via Android
psr 是一个问题
另外 elseif 本身不需要 直接 if 不就可以了么 反正我个人的习惯 很少用 elseif if 要么抛出异常 要么 return 跳出函数 主体流程都是保持在一个缩进里的 这样看起来更舒服 对于实在要用 elseif 的 我宁可转为 switch |
22
alexapollo 2016-06-01 22:06:15 +08:00
这个槽点明显不正确吧?
if -> else if 这样的逻辑可以做著名的的火车选路,可以做更好的跳转的。运行起来会比多个 if 更快。 |
23
arakashic 2016-06-02 03:34:10 +08:00
除非 code style 上有要求,要不然这个 case 里面
if () { throw } else if { } 和 if () { throw } if { } 有啥区别?不能光凭这一点就吐槽“能写出这种代码的人,还有人推崇。。。”吧。 |
24
xiamx 2016-06-02 06:27:37 +08:00
没啥不好,这种写法完整的描述了一个 state transition
|
25
qhgongzi 2016-06-02 09:10:53 +08:00
确实是不用 else if ,增加了理解难度,可以在后面直接 if
but....这么点小瑕疵,就上升到"能写出这种代码的人,还有人推崇。。。", 楼主酸味真浓。 要不楼主亮亮你的代码,看看有多少值得推崇的好代码 |
28
hanzhao 2016-06-02 11:37:35 +08:00
我也习惯这样写 有问题吗?
|
30
whatisnew OP 关于 http://php.net/manual/en/class.iteratoraggregate.php 和 https://github.com/slimphp/Slim/blob/2.x/Slim/Helper/Set.php#L77
关于 session cookie http://php.net/manual/zh/function.session-set-save-handler.php 关于 log exception http://php.net/manual/zh/class.logicexception.php 关于 log write https://github.com/yiisoft/yii2/blob/master/framework/log/Logger.php 关于如何设计一个 PHP 框架 http://symfony.com/doc/current/create_framework/index.html 我敢说作者是个野鸡 |
31
ioven 2016-06-06 08:49:55 +08:00
有其他小巧好用的逛街推荐不?
|
32
jeffw 2016-06-08 17:25:12 +08:00
帖一篇王垠博客的文章,直接拉到页面最后面开始看,第 2 条。
http://www.yinwang.org/blog-cn/2013/03/15/language-design-mistake1 然后再读读他的这篇文章,我觉得他说的是很有道理的。 http://www.yinwang.org/blog-cn/2015/11/21/programming-philosophy |