首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在其他重载中重用重载

在其他重载中重用重载
EN

Stack Overflow用户
提问于 2015-08-29 17:14:51
回答 1查看 50关注 0票数 1

如果我有setter函数重载

代码语言:javascript
复制
void setDamageRange(const Range& r);
void setDamageRange(int min, int max);

我可以用另一个过载

代码语言:javascript
复制
void Weapon::setDamageRange(const Range& r)
{
    setDamageRange(r.min, r.max);
}

void Weapon::setDamageRange(int min, int max)
{
    mDamageRange.min = min;
    mDamageRange.max = max;
}

我该这么做吗?或者我应该像这样做所有的有效性检查和赋值。

代码语言:javascript
复制
void Weapon::setDamageRange(const Range& r)
{
    mDamageRange = r;
}

void Weapon::setDamageRange(int min, int max)
{
    mDamageRange.min = min;
    mDamageRange.max = max;
}

我的直觉告诉我,为了重用代码,我应该选择第一个替代方案,因为这通常是一个很好的实践。但同时,感觉它在某种程度上使它变得凌乱,特别是如果我提供更多的功能重载,因为其中只有一个是“控制”功能。

就像我认为我不需要“控制”函数并删除它一样,我也必须为所有其他重载重新编写代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-29 17:24:27

我应该从另一个叫一个过载吗?

绝对一点儿没错!这是重用代码的极好方法。

或者我应该再做一次有效性检查和赋值。

一般来说,这将违背https://en.wikipedia.org/wiki/Don%27t_repeat_yourself原则,因为相同的验证(如果有的话)必须在两个地方进行。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32288715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档