2012-03-20 75 views
2

我想编写干净的代码。所以在编写一个方法时,我想告诉调用者有关参数,返回类型,异常等的方法。当调用一个方法时,调用者应该已经知道方法是否可以返回null或者参数是否为null。java中的清洁方法声明

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

所以:

  1. 是否有任何大的注释库,参数和返回类型

  2. 是这个注释只针对代码只可读性,或者它抛出一个异常,如果一个意想不到的价值/运行时遇到结果?

  3. 方法声明只应包括碱检查异常或亚类的它太像

    public void foo() throws ConnectionException, AuthenticationException { 
    } 
    
    public class AuthenticationException extends ConnectionException { 
    } 
    
+0

你是什么意思“(你)认为(JSR305是)不够”?它在哪里不足?你有没有尝试过将它用于你的目的?在我看来,像你应该能够标记返回类型'@ Nullable' – 2012-03-20 14:03:53

+0

想想梅托德接受两个paramater和它们的类型或范围取决于每个人。 – ayengin 2012-03-26 11:20:17

回答

0

这可能是也可能不是你心目中 - 设计 - 通过合同注解允许你指定的参数和返回的方法的类型必须满足一定的条件,被认为是正确的。看看cofoja

Java合同使您能够以预处理,后置条件和不变式的形式对合同进行注释。

这些合同注解

  • 易于读写,
  • 并在运行时检查。

与合同注解代码可以帮助你:

  • 设计,
  • 文件,
  • 测试和
  • 调试

您的程序。

+0

洛佩兹我检查cofoja它可以是我提的,但是,它是免费的错误,并容易学习。它的表现如何? – ayengin 2012-03-21 08:59:03

+0

@ayengin是的,这是因为没有bug,你可以想到的,它是由从谷歌人维护。关于性能,合同可以在全球范围内打开或关闭,性能开销几乎为零,因此不会造成任何性能问题。看看文档。 – 2012-03-21 13:54:02

0

关于“3”:一种方法,文件应包括通过所述方法引发的所有可能的例外,即,选中并未检查。

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

Annotations Tutorial

+0

Rgearding 2:我觉得这是不是Bean验证annotations.Annotation保留策略真正想到还可以运行类型不仅编译时间。 – ayengin 2012-03-20 15:21:37

+0

我从来没有看到一个梅托德宣布它将引发NullPointerException异常 – ayengin 2012-03-20 15:24:31

+0

我想我也没有,我已经采取了意见几乎是逐字从有效的Java(第62项) – DPM 2012-03-20 17:27:31

2

给我打电话给老学校。但是,这不是javadoc的用途吗?

+0

再次阅读问题我不喜欢写javadocs我想要代码自我解释器的一种方式。 – ayengin 2012-03-20 15:23:28

+1

我看过你的问题。只是指出这是记录文件的好方法。以及所有程序员习惯的方式。我现在没有回答你的问题。 PS:不喜欢写javadoc证明你是一个真正的程序员:) – roel 2012-03-21 07:09:54