看板 Soft_Job 關於我們 聯絡資訊
※ 引述《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是趕專案加上懶惰 造成的產物,懶惰會付出代價的...... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 50.156.87.148 ※ 文章網址: http://www.ptt.cc/bbs/Soft_Job/M.1410077823.A.0D7.html
manlike: 其實怎麼包都是無法改變他是10層if-else的複雜度 09/07 17:12
manlike: 只要是最簡潔的邏輯10層if-else沒有錯。 09/07 17:15
manlike: 反而是包一大堆function沒幾行,trace code跳來跳去很煩 09/07 17:16
manlike: 10層if-else只要註解加的好,比包一堆用一次的function好 09/07 17:17
manlike: 再來就是一個function裏面一堆return,維護性也很糟~ 09/07 17:20
MacPerson: 我如果看到程式碼有10層if else 我一定心裡默默問侯他 09/07 17:52
Obama19: 一堆funtion call和十層if-else好像都不好.. 09/07 17:57
MacPerson: 其實包成function後 根本不用trace進去 除非output 怪 09/07 18:04
MacPerson: 怪的 才需要追進去看 畢竟流程只需要邏輯 09/07 18:05
MacPerson: 只要他吐出來的結果是正確的 也不需要追進去 09/07 18:06
mapleone: 我上次遇到只有兩層的if結構,但是if和else中間的程式碼 09/07 18:07
mapleone: 居然要按三次Page Down,看起來好累。 09/07 18:08
robler: 才三次別緊張 我前工作的資深前輩一個function 6000行 09/07 19:07
clarkman: 我以前公司有人整份code只有一個function... 09/07 19:43
clarkman: 聽說那份後來沒人知道在寫什麼..後來的人重寫了 09/07 19:44
setsuan: 一個func?願聞其詳 09/07 20:23
cha122977: main啊XD 09/07 20:24
workworkwork: clarkman前公司該不會我待過?? 09/07 20:31
setsuan: 如果是初階全寫成一個func可以原諒(除錯方便) 09/07 20:32
workworkwork: 我遇過java一個function有5千行CODE的 09/07 20:32
setsuan: 但這個情況....拋接都全在同一func. .... 09/07 20:33
setsuan: 話說clark前輩您的帳號似乎很眼熟? 09/07 20:34
clarkman: XD不是你待過的~~~ 09/07 20:47
clarkman: 應該不熟吧~~我是個小小咖 09/07 20:56
mepowerlmay: 我的極限是兩層 專案篇小公司無限制開發模式 09/08 00:00
mepowerlmay: 十層if應該考慮重構 09/08 00:01
mepowerlmay: Delphi前輩維護過50層以上…我太年輕看不到 09/08 00:03
psliurt: java一個function5000行!!java不是物件導向嗎? 09/08 22:14
workworkwork: 是啊....java不是OOP嗎? 09/09 00:24
iceonly: 太多個if就直接把每個情況宣告成class了 09/09 13:27