【问题标题】:Standard name for method to check and set a variable检查和设置变量的方法的标准名称
【发布时间】:2015-07-15 10:19:37
【问题描述】:

我知道检查和更改布尔变量 X 值的方法的“标准”名称是 getX()isX()setX()

对于返回值并在返回值但仅在第一次返回值后更改它的方法是否有标准名称(即我不能使用toggleX(),因为它只会在第一次切换)?我想要一个只在第一次调用时才返回 true 的方法,所以类似于:

public boolean isFirstExecution() {
    if (mIsFirstExecution) {
        mIsFirstExecution = false;
        return true;
    } else {
        return mIsFirstExecution;
    }
}

问题在于,我认为使用名为 isX() 的方法更改变量的值可能会令人困惑。

【问题讨论】:

  • 你能再发一个例子来说明你的意思吗?您发布的 isFirstExecution 几乎可以这样,但如果您的语言支持,您应该使用方法内部的静态变量。 (下面继续)
  • (续)特别是,一般来说,“名为 isX() 的方法更改变量的值”没有任何问题。如果方法的名称必须解释方法所做的所有内部操作,则您必须使用它们的整个源代码作为它们的名称。名称必须表达的是该方法在对其用户重要的抽象级别上所做的事情;如果方法需要修改变量以实现其名称抽象描述的内容,那么调用该方法的人无关紧要。
  • 是的,我想我的问题是我没有意识到调用者对内部机制一无所知,所以幕后发生的任何事情都是无关紧要的(甚至可能没有变量第一名!)。如果您将此作为答案发布,我会将其标记为已接受:)
  • 嗯,谢谢,但这并不能真正回答您发布的字面问题,我至少要对其进行一些更改,我可以这样。如果需要,请对评论进行投票:)

标签: language-agnostic naming-conventions


【解决方案1】:

我认为您打算制作的功能没有特定名称。 命名时只需指定函数的用途。不会太长但足够具体,以便其他人在看到您的代码时也可以识别。

【讨论】:

  • 是的,我只是对在名为 isX() 的函数中产生副作用感到不舒服。我想这还不算太糟糕,只要它记录在实现该方法的类的内部即可。
【解决方案2】:

问题是你试图让这个方法做两件事——检查和设置。相反,您可以使用两种方法,isFirstExecution()(即检查mIsFirstExecution)和executedFirstTime()(将关闭mIsFirstExecution。)

不过,所有这些似乎都太“企业化”了,我建议将mIsFirstExecution 直接暴露给调用者,并取消这些方法。

【讨论】:

  • 这两种方法的问题在于,根据经验,我知道维护者在某些时候会忘记调用第二种方法,所以我希望它是“原子的”。而且恐怕它需要是“企业”,这不是个人项目:)
猜你喜欢
  • 2017-04-10
  • 1970-01-01
  • 2020-02-20
  • 2019-09-18
  • 2016-12-06
  • 1970-01-01
  • 2016-07-20
  • 1970-01-01
  • 2013-02-07
相关资源
最近更新 更多