【问题标题】:How to name a method that may or not do something? [closed]如何命名可能会或不会做某事的方法? [关闭]
【发布时间】:2016-05-31 18:01:18
【问题描述】:

更具体地说,如何命名可能会或不会向用户呈现视图的方法?

例如:

void maybeShowView() {

    if (checkSomething()) {
        presentViewToUser();
    }
}

所以 ma​​ybeShowView 是一个糟糕的名字,为了单元测试的目的,我也将可能的方法与呈现的方法分开,这样可以正确地对可能的方法进行单元测试。

在我的团队中,我们提出了类似的名字

  • 也许做某事
  • presentThingIfAvailable

但这名字真的很糟糕

有什么想法吗?

谢谢

注意: 我可以创建一个 boolean 方法 shouldPresentView() 但这需要我每次想要展示我的视图时都要检查它,我不想要这个。

【问题讨论】:

  • IfAvailableIfApplicable(等等)结尾的方法名称对我来说听起来很合理。但我担心这是个人意见的问题......
  • 实际上,如果我们使用 Cocoa,这是他们采取的方法,例如:layoutIfNeeded

标签: methods coding-style naming


【解决方案1】:

最好的办法是在方法的名称中包含条件和您将执行的操作。因此,如果您的视图将在 checkSomething() 为真时显示,您可以这样称呼它:

void presentViewIfSomething() {

    if (checkSomething()) {
        presentViewToUser();
    }
}

这将使该方法的实际作用毫无疑问。当然,这种方法的缺点是,如果您更改条件,您还必须更改方法的名称。

【讨论】:

  • 这是我们要采取的方法
  • 如果有多个条件怎么办?
  • @Lucas Bustamante 您可以将 If 语句中的条件串在一起。 If (CheckSomething() && CheckSomethingElse()) 等等。
  • 我的意思是,presentViewIfHomeAndUserLoggedInAndUserAdmin(),我知道这很糟糕,大声笑,只是为了给出一个想法 - 我问是因为我在为 WP 构建密码插件时遇到了类似的问题,我必须检查多个条件,看看我是否应该出示密码表格。
  • 这个答案很划算,但我建议更新最后一段。我不同意“如果您更改条件,您还必须更改方法的名称”。方法/函数的命名应使其准确描述函数的目的,但仍不能详细描述实现逻辑。例如,createTaskIfValidResult。 “有效结果”的逻辑可能会改变,但目的或结果应该是相同的,因为除非有效结果,否则不会创建任务。否则,你只是在编写一个新的方法/函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-12
相关资源
最近更新 更多