你提到的“避免太多层” 就是所谓的nested structure
而你的改良方案 称之为guard clause
google这两个词 会有许多的讨论可以参考
关于两种写法 我的心得大概是:
程式码的外观其实直接说明了某些事情。
guard clauses的code看起来就像在说:如果发生这件事,赶快处理完、然后滚吧。
一串if/else if/else像是在说:你看,各个情况都一样重要、
所以大家都在一样深层的巢状结构里面,真正重要的code跟某些狗屁情况一样重要,
所以他们一样在这恐怖程式码的内部第N层!
到底该怎么写还是看实际情况。不妨都试试,看当下哪个适合?
我之前思考这个问题时 有打出一整篇网志
http://blog.turn.tw/?p=83
供您参考
作者: tanson (Flash) 2014-09-08 01:17:00
推!
作者:
ppc ( )
2014-09-08 01:21:00push~
作者: ku399999 2014-09-08 03:06:00
推个 我工作后都用grard clauses 结果资深同事觉得不容易懂 我才发现不是这样用就是好
作者:
AmosYang (泛用人型编码器)
2014-09-08 04:03:00推网志
作者:
pest (这些分钟妳有没有想过我?)
2014-09-08 04:44:00推blog
作者:
ntddt (灭顶,降公投罢免门槛)
2014-09-08 08:26:00推网志 表达的简单, 有趣, 有料 :D
Guard Clause 不一定比较好, 特别是有优先权问题时例如 init A -> init B -> initC然后有人在 init B 后面插入 init CD但是 C 若失败了会造成 D 出问题
作者:
lmr3796 (Toro)
2014-09-08 13:45:00exception其实不一定完全比较好,有些看法认为大量的non local jump会造成资源管理或trace不容易
作者:
zased (我只是上PTT查资料)
2014-09-10 23:27:00写了两年的guard clause 才发现原来叫这名字 我觉得很直觉~