Re: [請益] 很多層迴圈和if 怎麼寫比較好整理
※ 引述《ronnywang (退伍啦)》之銘言:
: 原來的四層只剩下兩層
:
: 再搭配 function 的 return 來中斷的話
: 甚至用 Exception
: 其實程式需要寫到三層以上的機會很少的
: 不過重點還是在改寫後可讀性不能受到影響
<...........>
: ※ 編輯: ronnywang 來自: 114.25.235.14 (07/14 22:10)
: → timTan:盡量換個角度想,多用extract mehtod, 可以讓code變漂亮!! 07/14 23:37
: → timTan:我也喜歡這麼做。 07/14 23:37
: 推 Gaitz:簽名檔很讚XD 07/15 11:28
: → viable:你還是沒解決到問題 07/15 12:07
: → viable:你的書上有些switch這個字吧 玩線上遊戲也要看看書阿 07/15 12:15
: → viable:我覺得你沒有把我的問題看完 我說過if底下沒有再包一層if 07/15 13:28
: → viable:這不相干的東西 你可不可以另開一篇 不要誤導原本問題方向 07/15 13:30
回文基本上就是另開一篇了,要離題也好要討論本文也好,
基本上不作限制,也沒有誤不誤導的問題。
有本事的儘管自己問個「好問題」讓人想針對問題回答。
: → idoz5:就算原PO不是針對樓上的方式去求解,但這篇所提出來的技巧 07/15 22:25
: → idoz5:也還是有解決同樣的問題阿。樓樓上的推文有失公正噢 07/15 22:26
: 推 gmoz:推樓上 07/16 11:54
: 推 Davidjcan:推 07/16 12:54
: → viable:既然跟我的問題不相干 跟我談什麼公正?我當是法官喔 07/16 13:41
: → viable:就算當法官也要收錢財給你公正的 07/16 13:43
: → viable:原PO一來我和你不熟 二來你不是"高手" 請別對號入座XD 07/16 13:45
: → viable:看到這篇居然能有幫助的人 那很為你們開心 也恭喜你們阿 07/16 13:48
: → viable:能讓你們入門書少看好幾頁 真是日行n善呢 07/16 13:51
: → viable:你們教授收了學費是都交你們什麼 07/16 14:01
: → viable:還是你們還是高中生 正在預習課程 那真的是很用功上進 加油 07/16 14:03
: → viable:還有 我覺得你們有失公正這句話 有批評的意思 07/16 14:15
: → viable:已經寫要請教'高手'了 學生請不要來湊熱鬧 此非soft_school 07/16 14:17
: → viable:'另開一篇'四個字是沒看到嗎? 這有公不公正的問題嗎? 07/16 14:27
: → viable:既沒公不公正的問題就沒有所謂的失公正 請別造口業 卍(*04) 07/16 14:30
: → viable:switch是你們人生重要的里程碑 所以你們要多推一下 07/16 14:57
: → viable:以下開放推文 紀念人生的里程碑 07/16 14:58
那你列個高手條件清單吧,大家比較好判斷自己是不是高手,
畢竟板上目前沒有規定發文要附薪資單或在職證明。
我自己也是從學生時代就看板,一直到現在出社會幾年了,
基本上我不覺得學生就不應該/不能夠發表意見。
出來發文的怕人回應的話,我會建議是別發文了。
-----------------------------------
我的感覺是你問了一個超過遠比你想的還複雜的問題,
你問的這個問題的形式可能發生在任何多條件式的狀況,
而且這個條件判斷可以小從一個boolean 大從多個service 互相判斷,
視情況,簡單可以從 if-elseif 就滿足(根本不需要改),
再複雜一些些,簡化到一層的狀況透過 switch 去處理,
雖然有些人討厭 switch 的 fallback 特性帶來的複雜度而堅持不用。
再複雜一些些,可以用 State class 或包過得 Dispatcher 觀念做事。
如果你問我,照你原本的描述,我也不會回應你 switch 這個答案,
switch 並無助於降低描述這件事情的複雜度,只是語法上的表示不同而已。
說穿了,就是看你覺得哪個看得比較爽的問題,
我是不覺得 switch 看起來會比一堆 if 漂亮,不過這很主觀。
你的環境如果在允許的狀況下,應該是要進行狀態物件的包裝會比較合理。
我是覺得沒有比設計一個單一的 method call ,
然後透過 method 名稱說明他想幹嘛更漂亮的了,
但也有些事情是你根本省不掉的,所以這非常依賴於你的實作。
但問題是我們對於你的環境一無所知,我們不知道你的限制,
舉理,你要在十分鐘內解決這個問題/你以後不會再碰這段程式碼,
或是你只是想找程式可以寫成什麼樣子,我們無從得知,因為這是個壞問題。
我是認為只有「提問的高手」會有「回答的高手」自動上門來...
即使我認為你沒有盡到你問問題的責任,我們不會怪你,
我們不會追著你說。「你的確問了一個好問題嗎?」
當然,我們更不會跟你說,
「即使是學生幫忙寫作業也要欠人情的,我回答問題也要算鐘點費的。」
你的問題我覺得很多學生面對同樣的狀況,都可以問出比你更好的問題。
文末我想直接引用幾句話回應。
提問的智慧(這被轉到爛了,如果沒看過的話值得看一下。)
http://mis.ndhu.edu.tw/docu/question.htm
-----------------------------------
小心別問錯了問題。如果你的問題基於錯誤的假設,普通黑客(J. Random Hacker)
通常會用無意義的字面解釋來答復你,心裏想著“蠢問題...”,
希望著你會從問題的回答(而非你想得到的答案)中汲取教訓。
決不要自以為夠資格得到答案,你沒這種資格。畢竟你沒有為這種服務支付任何報酬。
你要自己去“掙”回一個答案,靠提出一個有內涵的,有趣的,
有思維激勵作用的問題--一個對社區的經驗有潛在貢獻的問題,
而不僅僅是被動的從他人處索要知識--去掙到這個答案。
另一方面,表明你願意在找答案的過程中做點什麼,是一個非常好的開端。
“誰能給點提示?”、“我這個例子裏缺了什麼?”以及“我應該檢查什麼地方?”
比“請把確切的過程貼出來”更容易得到答復。因為你顯得只要有人指點正確的方向,
你就有完成它的能力和決心。
-----------------------------------
- 謙遜絕沒有害處,而且常幫大忙
彬彬有禮,多用“請”和“先道個謝了”。
讓大家都知道你對他們花費時間義務提供幫助心存感激。
然而,如果你有很多問題無法解決,禮貌將會增加你得到有用答案的機會。
-----------------------------------
--
我:一半的日子讓你說,我聽你說你的所有______________________________________
______________________________________一半的日子我想說,對你說過去的所有:我
_______________________________________________________
在討論中妥善扮演兼具聆聽與分享的角色,是我們一生的課題。
_______________________________________________________
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 12.208.243.66
推
07/16 16:04, , 1F
07/16 16:04, 1F
→
07/16 16:05, , 2F
07/16 16:05, 2F
→
07/16 16:06, , 3F
07/16 16:06, 3F
→
07/16 16:07, , 4F
07/16 16:07, 4F
※ 編輯: TonyQ 來自: 12.208.243.66 (07/16 16:17)
推
07/16 16:16, , 5F
07/16 16:16, 5F
→
07/16 16:17, , 6F
07/16 16:17, 6F
→
07/16 16:17, , 7F
07/16 16:17, 7F
→
07/16 16:17, , 8F
07/16 16:17, 8F
※ 編輯: TonyQ 來自: 12.208.243.66 (07/16 16:21)
推
07/16 16:34, , 9F
07/16 16:34, 9F
→
07/16 16:36, , 10F
07/16 16:36, 10F
→
07/16 16:40, , 11F
07/16 16:40, 11F
→
07/16 16:40, , 12F
07/16 16:40, 12F
→
07/16 16:41, , 13F
07/16 16:41, 13F
→
07/16 16:42, , 14F
07/16 16:42, 14F
推
07/16 17:03, , 15F
07/16 17:03, 15F
→
07/16 17:36, , 16F
07/16 17:36, 16F
→
07/16 17:49, , 17F
07/16 17:49, 17F
→
07/16 17:59, , 18F
07/16 17:59, 18F
推
07/16 19:19, , 19F
07/16 19:19, 19F
→
07/16 19:33, , 20F
07/16 19:33, 20F
→
07/16 19:36, , 21F
07/16 19:36, 21F
→
07/16 19:37, , 22F
07/16 19:37, 22F
→
07/16 19:38, , 23F
07/16 19:38, 23F
→
07/16 19:38, , 24F
07/16 19:38, 24F
→
07/16 19:42, , 25F
07/16 19:42, 25F
→
07/16 19:42, , 26F
07/16 19:42, 26F
→
07/16 19:44, , 27F
07/16 19:44, 27F
→
07/16 19:44, , 28F
07/16 19:44, 28F
→
07/16 19:44, , 29F
07/16 19:44, 29F
→
07/16 19:44, , 30F
07/16 19:44, 30F
→
07/16 19:45, , 31F
07/16 19:45, 31F
→
07/16 19:46, , 32F
07/16 19:46, 32F
→
07/16 19:46, , 33F
07/16 19:46, 33F
→
07/16 19:49, , 34F
07/16 19:49, 34F
→
07/16 19:52, , 35F
07/16 19:52, 35F
→
07/16 19:53, , 36F
07/16 19:53, 36F
→
07/16 19:57, , 37F
07/16 19:57, 37F
→
07/16 20:08, , 38F
07/16 20:08, 38F
推
07/16 21:25, , 39F
07/16 21:25, 39F
推
07/17 00:08, , 40F
07/17 00:08, 40F
推
07/17 00:13, , 41F
07/17 00:13, 41F
推
07/17 00:15, , 42F
07/17 00:15, 42F
→
07/17 00:23, , 43F
07/17 00:23, 43F
→
07/17 00:23, , 44F
07/17 00:23, 44F
→
07/17 06:40, , 45F
07/17 06:40, 45F
推
07/18 00:41, , 46F
07/18 00:41, 46F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 16 篇):