Re: [讨论] 因为空格~我离开了一间公司

楼主: neversay (子不语)   2014-09-07 16:16:59
※ 引述《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,维护性也很糟~
作者: MacPerson (Gary)   2014-09-07 17:52:00
我如果看到程式码有10层if else 我一定心里默默问侯他
作者: Obama19 (^_^)   2014-09-07 17:57:00
一堆funtion call和十层if-else好像都不好..
作者: MacPerson (Gary)   2014-09-07 18:04:00
其实包成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行
作者: clarkman (凉雨)   2014-09-07 19:43:00
我以前公司有人整份code只有一个function...听说那份后来没人知道在写什么..后来的人重写了
作者: setsuan   2014-09-07 20:23:00
一个func?愿闻其详
作者: cha122977 (CHA)   2014-09-07 20:24:00
main啊XD
作者: workworkwork (workworkwork)   2014-09-07 20:31:00
clarkman前公司该不会我待过??
作者: setsuan   2014-09-07 20:32:00
如果是初阶全写成一个func可以原谅(除错方便)
作者: workworkwork (workworkwork)   2014-09-07 20:32:00
我遇过java一个function有5千行CODE的
作者: setsuan   2014-09-07 20:33:00
但这个情况....抛接都全在同一func. ....话说clark前辈您的帐号似乎很眼熟?
作者: clarkman (凉雨)   2014-09-07 20:47:00
XD不是你待过的~~~应该不熟吧~~我是个小小咖
作者: mepowerlmay (用心,找对人)   2014-09-08 00:00:00
我的极限是两层 专案篇小公司无限制开发模式十层if应该考虑重构Delphi前辈维护过50层以上…我太年轻看不到
作者: psliurt (反指标)   2014-09-08 22:14:00
java一个function5000行!!java不是物件导向吗?
作者: workworkwork (workworkwork)   2014-09-09 00:24:00
是啊....java不是OOP吗?
作者: iceonly (只有冰)   2014-09-09 13:27:00
太多个if就直接把每个情况宣告成class了

Links booklink

Contact Us: admin [ a t ] ucptt.com