Re: [請益] 很多層迴圈和if 怎麼寫比較好整理

看板Soft_Job作者 (台灣獨立建國不必錢嗎?)時間13年前 (2011/07/17 13:10), 編輯推噓3(304)
留言7則, 6人參與, 最新討論串16/16 (看更多)
※ 引述《zanyking (遙遠的旅人)》之銘言: : ※ 引述《Ting1024 (無)》之銘言: : : 善用 condition , return 的方法是很方便解決 : : 太多層判斷的問題 : : 不過很多的書籍,一直強調函示不要「中途返回」 : : 各位認為呢? : : 其實goto也不錯,只要能取一個不錯的目的地名稱, : : 會有一針見血的效果 XD : 我個人的經驗: : 1. 多層的if else要極力避免。 : 每開一組{},就是一個stack,每個stack的狀態與條件都是一直累加上去的。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 這句話是乎是錯的 函數會用到堆疊,if, for, while, do 應該是不會用到堆疊 舉例: goto test; if(0) { int x=0; test: x=1; } 其中, x 這個變數是在一進入函數後,就放入 stack 所以,從 if 外 goto 到 {} 內,不會產生問題。 : 對正在寫的人來說,if else 堆疊一直上去在那個當下可能很方便。 : 但對過了一個星期的自己還有其他人來說,要看懂堆疊最末端的那段邏輯所代表 : 的意義就得要把該分枝從頭走過來才能確實掌握來龍去脈。 : 習慣寫這種程式碼的人,在我看來就像是把油漆工把油漆筒放在起點然後拿著刷子 : 一路往終點衝,想要憑著刷子上沾著的油漆就刷完整片籬笆一樣,基本上只爽在那 : 個衝刺的當下。 : 在這樣的程式碼基礎上(7~8層,500 line+),繼續加功能或修Bug是浪費時間。 : 就算是寫演算法相關,我寧可寫一堆的pure method,然後讓現代聰明的Compiler : 還是VM幫我inline就好。 : 2. 中途會用if return的寫法是可以用的,但這樣寫通常較適用在窮舉或消去的情境上。 : 窮舉法舉例來說,java 裡物件equals的實做常常就是一堆中途Return,目的就是要 : 窮舉所有false的情況(或是true,端看那個比較好窮盡),那剩下的可能性就是true : (或是false)。 : 消去法舉例來說通常用在排除特殊條件的時候,如果有個方法實做,輸入參數的組合 : 當中只存在少數特例需要特別處理,其他多數輸入參數都可以用通解得到正確輸出, : 那既然這段程式還不到給架構解的程度,最好的方法就是在方法實做的開頭把特例 : 排除掉。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.46

07/17 13:11, , 1F
我猜是人腦堆疊
07/17 13:11, 1F

07/17 14:01, , 2F
人家講的是人腦堆疊~
07/17 14:01, 2F

07/17 16:04, , 3F
難怪你沒引下面那句"對正在寫的人來說..."
07/17 16:04, 3F

07/17 20:16, , 4F
有些公司看到GOTO會直接給你退件
07/17 20:16, 4F

07/18 11:39, , 5F
我說的是Call Stack,是人的腦袋CPU邏輯上儲存區域狀態
07/18 11:39, 5F

07/18 11:40, , 6F
07/18 11:40, 6F

07/18 13:46, , 7F
看完本文就知道不是電腦中的stack..原PO加油好嗎?
07/18 13:46, 7F
文章代碼(AID): #1E8cwqF7 (Soft_Job)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 16 之 16 篇):
文章代碼(AID): #1E8cwqF7 (Soft_Job)