2012-03-20 104 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