Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的Clean方法声明_Java_Coding Style_Annotations - Fatal编程技术网

java中的Clean方法声明

java中的Clean方法声明,java,coding-style,annotations,Java,Coding Style,Annotations,我想写干净的代码。因此,在编写方法时,我希望将参数、返回类型、异常等告知方法的调用方。调用方法时,调用方应该已经知道该方法是否可以返回null或参数是否可以为null 我可以在javadoc中解释这一点,但我想用注释来解释。我知道jetbrains和现在的JSR305试图解决这个问题,但我认为它们还不够 因此: 是否有用于参数和返回类型的大型注释库 此注释仅用于代码的可读性,还是在运行时遇到意外值/结果时引发异常 方法声明应该只包括基检查异常或它的子类,就像 public void foo()

我想写干净的代码。因此,在编写方法时,我希望将参数、返回类型、异常等告知方法的调用方。调用方法时,调用方应该已经知道该方法是否可以返回null或参数是否可以为null

我可以在javadoc中解释这一点,但我想用注释来解释。我知道jetbrains和现在的JSR305试图解决这个问题,但我认为它们还不够

因此:

  • 是否有用于参数和返回类型的大型注释库

  • 此注释仅用于代码的可读性,还是在运行时遇到意外值/结果时引发异常

  • 方法声明应该只包括基检查异常或它的子类,就像

    public void foo() throws ConnectionException, AuthenticationException {
    }
    
    public class AuthenticationException extends ConnectionException {
    }
    
  • 关于“3”:方法文档应包括该方法引发的所有可能异常,即已检查和未检查

    关于“2”:注释不是一种允许在运行时抛出异常的机制。它们有三个主要用途:为编译器生成样板代码、文档和信息,允许编译器生成警告。请看这里:


    这可能是您的想法,也可能不是您的想法-契约式设计注释允许您指定方法的参数和返回类型必须满足某些条件才能被认为是正确的。看看:

    ContractsforJava使您能够使用前置条件、后置条件和不变量形式的契约对代码进行注释

    这些合同注释是

    • 易于书写和阅读
    • 并在运行时进行检查
    使用合同注释代码有助于您:

    • 设计
    • 文件
    • 测试,以及
    • 调试
    你的程序


    叫我老派。但这不是javadoc的作用吗?

    你的意思是“(你)认为(JSR305)不够吗”?这有什么不足之处?你试过用它来达到你的目的吗?在我看来,你应该能够用
    @Nullable
    标记一个返回类型,认为一个metod使用两个参数,并且它们的类型或范围相互依赖。Rgearding 2:我认为这不是真的,想想bean验证注释。注释保留策略也可以是运行类型,而不仅仅是编译时。我从未见过metod声明它会引发NullPointerException我想我也不会,我几乎一字不差地接受了来自有效Java(第62项)的建议再次阅读问题我不喜欢写Javadoc我想要代码一种自我解释的方式。我阅读了你的问题。只是指出这是一种很好的记录方式。这也是所有程序员都习惯的方式。我现在不知道你问题的答案。PS:不喜欢写javadoc证明你是一个真正的程序员:)Lopez我检查了cofoja它可以是我提到的,但是,它没有bug并且易于学习。它的性能如何。@ayengin是的,它和你所期望的一样没有bug,并且由google的人维护。关于性能,契约可以在全球范围内打开或关闭,而性能开销几乎为零,因此它不应该导致任何性能问题。请看一下文档。