重用其他重载中的重载

时间:2015-08-29 17:14:52

标签: c++

如果我有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;
}

我的直觉告诉我,我应该选择第一种方法来重用代码,因为这通常是一种很好的做法。但与此同时,感觉就像它在某种程度上使它变得混乱,特别是如果我提供更多的函数重载,因为它们中只有一个是“控制”函数。

就像我认为我不需要“控制”功能并将其删除一样,我也必须为所有其他重载重写代码。

1 个答案:

答案 0 :(得分:3)

  

我应该[从另一个调用一个重载]吗?

绝对!这是重用代码的绝佳方式。

  

或者我应该再次进行所有有效性检查和分配

通常,这会违反Don't Repeat Yourself原则,因为相同的验证(如果有的话)必须进入这两个地方。