※ 引述《twoseven (Tse)》之铭言:
: 当然这还是要看愈到的情况
: 除非真的是个别的条件又有个别的支线要处理 我才会想包起来
: 我曾经看过一个vb6用包起来只是判断条件就包了10层..还好很整齐
: 不过要是哪天突然碰到要维护光是要决定改第几层就很头大
: 新手上路..请尽量鞭策:)
就我个人三种风格都碰过的经验来说,用Nested if有个很明显的问题,就是
维护性。
软件有种自我繁殖的惰性,所以当一个程式码用了三层的if来做validation,
很难不保证未来接手的人会让他长出第四五六层。
这时候guard condition或者short circuit evaluation在维护性上就有其优势。
所以在我们公司里面做code review时我反而会要求相反的趋势,把Nested if改
成guard condition或者short circuit evaluation......
维护过慢慢长出十层if+else的程式后,我一直觉得Nested if是赶专案加上懒惰
造成的产物,懒惰会付出代价的......
作者:
manlike ( )
2014-09-07 17:12:00其实怎么包都是无法改变他是10层if-else的复杂度只要是最简洁的逻辑10层if-else没有错。反而是包一大堆function没几行,trace code跳来跳去很烦10层if-else只要注解加的好,比包一堆用一次的function好再来就是一个function里面一堆return,维护性也很糟~
我如果看到程式码有10层if else 我一定心里默默问侯他
作者:
Obama19 (^_^)
2014-09-07 17:57:00一堆funtion call和十层if-else好像都不好..
其实包成function后 根本不用trace进去 除非output 怪怪的 才需要追进去看 毕竟流程只需要逻辑只要他吐出来的结果是正确的 也不需要追进去
作者:
mapleone (mapleone)
2014-09-07 18:07:00我上次遇到只有两层的if结构,但是if和else中间的程式码居然要按三次Page Down,看起来好累。
作者:
robler (章鱼丸)
2014-09-07 19:07:00才三次别紧张 我前工作的资深前辈一个function 6000行
我以前公司有人整份code只有一个function...听说那份后来没人知道在写什么..后来的人重写了
我遇过java一个function有5千行CODE的
但这个情况....抛接都全在同一func. ....话说clark前辈您的帐号似乎很眼熟?
我的极限是两层 专案篇小公司无限制开发模式十层if应该考虑重构Delphi前辈维护过50层以上…我太年轻看不到
作者: psliurt (反指标) 2014-09-08 22:14:00
java一个function5000行!!java不是物件导向吗?
作者:
iceonly (只有冰)
2014-09-09 13:27:00太多个if就直接把每个情况宣告成class了