作者pokkys (人很好那一個)
看板Soft_Job
標題Re: [請益] 很多層迴圈和if 怎麼寫比較好整理
時間Sat Jul 16 23:46:58 2011
※ 引述《Ting1024 (無)》之銘言:
: ※ 引述《qrtt1 (null)》之銘言:
: : 這樣就可以使用 early break/return 的方式
: : 也就是版友 ronnywang 建議的部分。
: 善用 condition , return 的方法是很方便解決
: 太多層判斷的問題
: 不過很多的書籍,一直強調函示不要「中途返回」
: 各位認為呢?
: 其實goto也不錯,只要能取一個不錯的目的地名稱,
: 會有一針見血的效果 XD
當程式複雜到某一個程度,會面臨memleak的問題。
func()
{
new a1
new a2
new a3
out3:
del a3
out2:
del a2
out1:
del a1
return ret
}
這樣的作法有點像一些離開scope自動unref的語言。
好處是可以降低思考如何避開memleak的過程。
而中途離開....應該會破壞這樣的結構(我猜想的)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.34.233.130
推 chchwy:linux kernel裡面大量使用這種方法 07/16 23:59
→ qrtt1:同樣的問題在多執行緒程式會出現,例如 pthread 的 07/17 09:34
→ qrtt1:lock/unlock 配對被破壞的問題。真的要小心>"< 07/17 09:35
→ karcher:這個手法在處理例外發生也常用到。比較好奇的是,好像沒看 07/17 09:52
→ karcher:過有人對甚麼out3、out2做管理。也許是因為這種手法大部分 07/17 09:53
→ karcher:用於某個local function,因此不需要做管理。 07/17 09:54
→ atst2:在有smart pointer機制時,什麼情況下會需要用到這種手法呢? 07/17 11:28
→ karcher:大多數的情況,用smart_pointer應該就足以應付這類情形 07/17 12:20
→ karcher:正常如果一個函式裡面有許多複雜運算,也不會有人會想用一 07/17 12:21
→ karcher:組template就搞定的。如果有,可能我說的東西就有價值。 07/17 12:22