代码之家  ›  专栏  ›  技术社区  ›  letronje

返回布尔值的java方法的命名约定(无问号)

  •  79
  • letronje  · 技术社区  · 15 年前

    我喜欢在其他语言的方法/函数名的末尾使用问号。Java不允许我这么做。作为一种解决方法,我如何才能在Java中命名布尔返回方法?使用 is , has should , can 在某些情况下,方法的前面听起来不错。有没有更好的方法来命名这种方法?

    例如createFreshSnapshot?

    6 回复  |  直到 8 年前
        1
  •  117
  •   jjnguy Julien Chastang    8 年前

    isEmpty()
    
    hasChildren()
    

    这样,名字读起来就像结尾有个问号。

    藏品是空的吗?
    这个节点有子节点吗?

    true 是的,而且 false

    或者,你可以把它读成一个断言:

    集合为空。
    节点有子节点


    有时,您可能想将方法命名为 createFreshSnapshot?

    在这种情况下,你应该重新思考你实际上在问什么。有点像 isSnapshotExpired 是一个好得多的名称,它传达了方法在调用时将告诉您的内容。遵循这样的模式也有助于保持更多功能的纯粹性和无副作用。

    Google Search isEmpty() 在Java API中,可以得到很多结果。

        2
  •  29
  •   Community Mohan Dere    6 年前

    Java Beans specification ,以便工具利用反射(例如。 JavaBuilders , JGoodies Binding )可以识别布尔getter,也可以使用 getXXXX() isXXXX() 作为方法名。从JavaBeans规范:

    此外,对于布尔属性,我们允许getter方法与模式匹配:

    public boolean is 属性名 > ()

    这是< 属性名 >可以提供方法而不是get< 属性名 属性名 >方法。无论哪种情况,如果是< 属性名 >方法存在于布尔属性中,然后我们将使用is< 属性名 >方法读取属性值。一个示例布尔属性可能是:

    public boolean isMarsupial();
    public void setMarsupial(boolean m);
    
        3
  •  25
  •   Ryan    11 年前

    Java Programming Style Guidelines

    第14项特别相关,并建议 前缀。

    除了 可以 应该 前缀:

    boolean hasLicense();
    boolean canEvaluate();
    boolean shouldAbort = false;
    

    如果您遵循这些指导原则,我相信适当的方法将被命名为:

    shouldCreateFreshSnapshot()
    
        4
  •  11
  •   codymanix    15 年前

    try :

    if (tryCreateFreshSnapshot())
    {
      // ...
    }
    

    对于所有其他情况,使用前缀,如 is.. has.. was.. can.. allows..

        5
  •  5
  •   jjnguy Julien Chastang    15 年前

    标准是使用“is”或“has”作为前缀。例如 isValid hasChildren .

        6
  •  2
  •   Skilldrick    15 年前

    is 是我遇到最多的人。不过,在当前形势下,任何有意义的事情都是最好的选择。

        7
  •  0
  •   Adrian    6 年前

    一般的 命名约定,例如:

    Set : boolean add​(E e)

    然后做些处理 报告 是否成功

    return 确实是 boolean 方法的名称应该指向 而不是 (本例中为布尔值)。

    你的 createFreshSnapshot 对我来说,这个例子似乎与这个观点更相关,因为它似乎意味着:创建一个新快照,然后报告创建操作是否成功。考虑到这个理由而不是名字 创建刷新快照 似乎是最适合你的情况。