我有一個現有的方法(或普遍的功能),我需要增加額外的功能,但我不想在代碼中的其他地方打破任何方法的使用。例如:擴展現有API:使用默認參數或包裝函數?
int foo::bar(int x)
{
// a whole lot of code here
return 2 * x + 4;
}
廣泛用於基本代碼。現在我需要將4作爲一個參數,但任何已經調用foo :: bar的代碼仍然應該能夠得到它所期望的。我應該擴展和重命名舊的方法,它包裝成一個新的像
int foo::extended_bar(int x, int y)
{
// ...
return 2 * x + y;
}
int foo::bar(int x)
{
return extended_bar(x,4);
}
或者我應該聲明在頭文件中的默認參數一樣
int bar(int x, int y=4);
,只是擴展功能
int foo::bar(int x, int y)
{
// ...
return 2 * x + y;
}
每個變體的優缺點是什麼?
似乎是對我而言的風格而不是物質。兩者都是可行的解決方案。 – Robert 2009-06-02 17:45:14