2011-03-31 59 views
0

考慮下面的代碼片斷之前去除的功能重複呼叫:從容器功能退出

void MyFun() 
{ 
SetMe(); 
// more code 
if (..) 
{ 
UnSetMe(); 
return; 
} 
// more codes 
if (..) 
{ 
UnSetMe(); 
return ; 
} 
// more code 
UnSetMe(); 
} 

正如你可以看到,該函數第一至終止呼叫SetMe(),然後之前,調用UnSetMe()。現在,在函數必須退出的每個地方添加UnSetMe()有點麻煩,並且在某些地方可能會錯誤地忽略它。

什麼是一種改進的設計來處理這種情況。

回答

1

你可以稱之爲從MyWrapperFun MyFun()(),然後調用後UnsetMe():

void MyWrapperFun() 
{ 
    MyFun(); 
    UnsetMe(); 
}