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