※ 引述《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了