您是否编写了返回未使用值的方法?[关闭]

Do you write methods to return unused values? [closed]

提问人:eplictical 提问时间:1/7/2014 最后编辑:eplictical 更新时间:1/7/2014 访问量:72

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

9年前关闭。

这(可能)是一个风格问题。如果你正在编写代码,并且你不打算使用方法的返回值(比如,成功/失败的 true/false),你仍然编写该方法来返回值吗?即。是否有可能在代码的未来版本中有人使用返回值?

更一般地说,如果当前不使用这些方法的返回值,您是将方法编写为 always 还是 always not 返回值?

下面是一个示例:我有一个从列表中删除项目的方法。如果列表为空,则不会删除任何内容,但当前调用代码不关心是删除了 0 项还是 1 项。将来的代码修订可能会引起注意。你会这样写代码吗?

void removeItem() {
  if (!m_list.empty()) {
    m_list.pop();
    m_list.pop_back();
  }
}

或者,作为面向未来的一种方式:

bool removeItem() {
  if (!m_list.empty()) {
    m_list.pop();
    m_list.pop_back();
    return true;
  }
  return false;
}

在代码审查中,审查者可能会说返回值当前未使用,因此请删除它。

函数 与语言无关的 编码样式 返回值

评论

0赞 juanchopanza 1/7/2014
不清楚你在问什么。但是,如果一个函数有一个返回值,你必须从中返回一些东西。不这样做是未定义的行为,但 除外,它有一个隐式的 .这适用于 C++,因为问题之前有该标签。main()return 0;
0赞 eplictical 1/7/2014
@juanchopanza我已经编辑过了。这是否更清楚?它更像是一种编程范式,所以我认为它与语言无关。
2赞 juanchopanza 1/7/2014
并不是真正的语言不可知论。在许多语言中,您会抛出信号失败或错误的异常。其他语言没有例外。
0赞 Ingo 1/7/2014
这个问题与语言无关。在许多编程语言中,这个问题根本没有意义。
0赞 Wayne Conrad 3/18/2014
在某些语言中,每个方法都有一个返回值,调用者可以使用或不使用该返回值。

答:

2赞 nvoigt 1/7/2014 #1

考虑到 YAGNI 原则,我认为您不应该返回任何在遥远的将来可能需要的东西,也许是暂时的可选。将来,无论如何,您都需要其他东西。如果你今天计划一个布尔值,明年你将需要双倍,而为未来的布尔值做准备的所有工作都白费了。

按照规范实施。不多也不少。