引用Java方法的指导原则是什么?

引用Java方法的指导原则是什么?,java,methods,Java,Methods,当我需要在讨论中引用Java方法时,我通常这样写: 然而,不清楚是否: 该方法是静态的 该方法具有返回类型 该方法具有可见性修改器 该方法可能引发异常 那么,在引用Java方法时,是否有编写Java方法的标准呢?最完整的版本是使用修饰符和返回类型编写方法的整个签名,并最终抛出异常,如标准javadoc中所示: public boolean equals(Object obj) 显然,它还取决于使用引用的上下文。尽量做到所需的完整。这是一个很好的指南: 没有返回类型的方法将声明为void,

当我需要在讨论中引用Java方法时,我通常这样写:

然而,不清楚是否:

  • 该方法是静态的
  • 该方法具有返回类型
  • 该方法具有可见性修改器
  • 该方法可能引发异常

那么,在引用Java方法时,是否有编写Java方法的标准呢?

最完整的版本是使用修饰符和返回类型编写方法的整个签名,并最终抛出异常,如标准javadoc中所示:

public boolean equals(Object obj)
显然,它还取决于使用引用的上下文。尽量做到所需的完整。这是一个很好的指南:

没有返回类型的方法将声明为void,而具有返回类型的方法将返回类型作为方法声明的一部分


静态方法(在类中)可以从另一个类调用,而无需创建该类的实例。

假设这个问题是指在元上下文中讨论Java代码时如何引用方法的困难。例如

在此上下文中,您应该使用该方法而不是
++
运算符,因为

现在,我们可以讨论的一种方法可以按以下方式分类:

  • 静态与非静态
  • 有参数vs没有参数
  • 具有返回值vs具有无效类型
  • 公共访问与私人访问与其他访问
在上下文中,上面的示例足够明确,因为名为“append”的方法之间没有太大的重叠。但是,如果它被提升到一些实际的Java代码中,它可能无法编译,原因有几个:

  • 有问题的“append”方法需要一个参数
  • 它是一个非静态方法,上面的用法看起来像一个静态方法调用
此外,由于它的编写方式类似于静态方法调用,但引用的是实例方法调用,因此读者可能会感到困惑

在很多情况下,通常可以通过给出实际的代码示例来找到解决方案,从而消除所有歧义

尝试以下方法:

StringBuilder sb=新建StringBuilder();
某人附加(文本附加)

这样做的问题是不必要的冗长,而且会变得更加笨拙和不方便。此外,它失去了以“元”方式讨论方法的能力,也没有明显的地方放置链接供参考

如果您所引用的方法的类是已知的,那么消除所有歧义的一种方法是提供中给出的完整方法签名,包括访问修饰符。例如

尝试使用的实例的方法。这避免了重复的过程

这具有一致性和显示所有相关信息的优点,但打字确实会变得更加费力

如果上下文表示不存在歧义,则省略以下任何一项是合理的:

public
StringBuilder追加(stringstr)

如果访问修饰符与讨论无关,则可以省略
public

public
StringBuilder
append(stringstr)

如果返回类型明显、明确或与讨论无关,则可以省略它

publicstringbuilder追加(String
str

如果参数名称与讨论无关(通常情况下),则可以省略它们

公共StringBuilder追加
(字符串str)

如果意图中没有歧义或参数不相关,则可以完全忽略参数

尝试使用的实例的方法。这避免了重复的过程

这也许是避免不必要信息的最明确的方法。也就是说,我的第一个示例中的符号非常方便,通常不会导致混淆


归根结底,这取决于品味,但避免模棱两可应该是最重要的考虑因素,为此,采用一种相对符合Java API规范本身的方法似乎是一个好主意。

这里有一个有趣的问题。我假设“命名”是指在讨论代码时引用方法的行为?在这种情况下,这更多的是一个“元”问题,而不是关于Java本身的问题。您不是在问用Java编写方法的标准是什么。你是在问我怎么称呼特定的方法?您只需查找即可。按照惯例,Java中的方法名是“camelCase”。除此之外,适当地命名他们来描述他们的工作。静态或返回值与任何事情都有什么关系?一般来说,java中的方法名称很快描述了功能。名为
getX
的ie方法应该返回x,而不是打印“hello world”。我认为,这个问题是指讨论(在元上下文中)Java方法名称的问题,而不是命名约定的问题。