1
重用重載如果我有setter函數重載在其他重載
void setDamageRange(const Range& r);
void setDamageRange(int min, int max);
,我能夠使用重載之一,在其他
void Weapon::setDamageRange(const Range& r)
{
setDamageRange(r.min, r.max);
}
void Weapon::setDamageRange(int min, int max)
{
mDamageRange.min = min;
mDamageRange.max = max;
}
我應該怎麼辦呢?或者我應該再次進行所有有效性檢查和分配
void Weapon::setDamageRange(const Range& r)
{
mDamageRange = r;
}
void Weapon::setDamageRange(int min, int max)
{
mDamageRange.min = min;
mDamageRange.max = max;
}
?
我的直覺告訴我,我應該選擇第一個替代方案來重用代碼,因爲這通常是很好的做法。但與此同時,它感覺就像是讓它變得混亂,特別是如果我要提供更多的功能重載,因爲它們中只有一個是「控制」功能。
就像我認爲我並不真的需要「控制」功能並將其刪除,我必須重寫所有其他過載的代碼。
我更喜歡第一個。沒有冗餘和改進的可讀性:) 這是基於意見,兩種方法都沒有錯。 – CinCout
在第二個重載中還有第三個重用第一個重載的選項:'setDamageRange(Range(min,max));'並且你不必在'Range :: operator ='中重複代碼。 – LogicStuff