
消除重複代碼代碼很多種,比如:
1)提煉成函數複用
2)使用宏
3)繼承
4)使用閉包(boost::bind、boost::function)
上述是最為常用的,對于C++程式,閉包可能用得相對少一點。下列代碼使用的是第5種:利用#include消除重複代碼:
void f1()
{
try
{
。。。
}
catch (Aexception& a)
catch (Bexception& b)
{
catch (Cexception& c)
catch (Xexception& x)
}
void f2()
catch (Yexception& y)
catch (Zexception& z)
void f3()
消除重複代碼之後,如下:
#include "catch.cc"
catch.cc檔案的内容為:
catch (Aexception& a)
catch (Bexception& b)
{
catch (Cexception& c)
catch (Xexception& x)
catch (Yexception& y)
catch (Zexception& z)
當然,可以用宏達到同樣的目的,不過不用宏,也許是更明智的知法。