看板 Soft_Job 關於我們 聯絡資訊
※ 引述《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