【问题标题】:How to name method for setting boolean variable如何命名设置布尔变量的方法
【发布时间】:2019-04-04 08:09:10
【问题描述】:

我有布尔变量,它告诉我用户是否有自己的文本(我在 GUI 中有文本编辑小部件)或者我是否应该从名为 hasOwnText 的文件中加载。

我只在类内部使用它,所以我不需要任何 getter,但是我需要根据 GUI 中的复选框从外部设置它。问题是该方法应该如何命名?

我一直将它们命名为setHasOwnText,但我不知道这对我来说似乎不是那么好。能不能改进一下?

另外,如果我的变量被命名为 hasOwnText 并且如果我需要 getter,我是否应该将其命名为 getHasOwnText

谢谢

【问题讨论】:

  • @MrPromethee 对不同语言的约定是不同的,尤其是 C++ 并没有任何被广泛接受的规则。也许这应该只是因为过于固执而被关闭,但我想先看看是否有人提出了一个好的 C++ 特定答案。
  • 命名事情在我看来有时比实施事情更复杂。 (同事也这么告诉我。)我通常遵循我认为是我目前最喜欢的第 3 方 API 中的约定 / 基本上是在其上构建我的应用程序。 (有时,这些约定甚至被记录为“规则”。)
  • setHasOwnText 似乎是错误的,因为它表明存在第二种方法setOwnText 并且客户端必须正确使用它们(也就是它们可以不正确地使用)。如果您确实有setOwnText,那么该方法应该设置bool。无论如何,我只是推测,实际上只有你知道最好的名字是什么
  • 好吧,我实际上有方法setOwnText 设置实际文本:D。我的意思是,我没有要求显示一些规则并告诉“就是这样”,我只是想看看其他人的意见。我想我只是保持原样。谢谢

标签: c++ naming conventions


【解决方案1】:

getter 和 setter 有两种常见的模式:

int someValue();              // getter
void someValue(int newValue); // setter

或者:

int getSomeValue();
void setSomeValue(int newValue);

起初,即使您不需要吸气剂,原则上我还是会提供一个。如果用户可以设置一个值(无论是您自己还是其他任何人),她/他可能想知道一段时间后她/他实际上设置了哪个值,而不必单独记住。对于布尔值,我也完全可以使用第一种模式:

isSomething(true); // or has
if(isSomething()) { }

对于第二种模式,虽然 'get' 被替换为 'is'/'has',我仍然只是在前面加上 'set' 前缀:

setHasSomething(true);
if(hasSomething()) { }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多