我會描述這個問題。我有一個API類,它調用一個大型的類成員函數層次來完成一些邏輯。現在,我更新了邏輯,以便層次結構中的每個函數都需要額外的參數(API不會更改)。有一個修改'scratchpad'變量的const函數是否正確?
一個想法 - 不是給每個方法增加一個額外的參數,我可以爲該類添加一個'scrathpad'成員,即一個只用於臨時計算的變量,並且只在時間範圍內有效的API調用,並且一旦調用完成就是'垃圾'。
例子:
void A::api()
{
scratch_pad = get_some_value_once();
foo1();
}
void A::foo1() { ...; foo2(); }
void A::foo2() { ...; foo3(); }
...
void A::fooN() /* Called 100000000 times */
{
...;
// Do something with scratch_pad.
// I would realy like to avoid adding 'scratch_pad' parameter to all the foos().
}
這是一種有效的方法?
如果我的API被聲明爲const,它仍然有效嗎?
WTH是_ 「暫存」 _變量?你能用一些(僞)代碼示例來說明嗎? –
如果它不改變對象的可觀狀態,我認爲它沒有問題。 – songyuanyao
_「現在,我更新了邏輯,因此層次結構中的每個函數都需要額外的參數(API沒有更改)。」_聽起來像繼承應該用於替換接口定義,但實際上不可能從您的不明確的背景。 –