我的項目正在慢慢實現Java註釋。一半的開發人員(包括我自己)發現,對註釋進行復雜操作似乎會增加我們的整體維護負擔。另一半的隊員認爲他們是蜜蜂的膝蓋。Java註釋的可維護性?
您的團隊開發人員能夠維護帶註釋的代碼,您的真實體驗是什麼?
我的項目正在慢慢實現Java註釋。一半的開發人員(包括我自己)發現,對註釋進行復雜操作似乎會增加我們的整體維護負擔。另一半的隊員認爲他們是蜜蜂的膝蓋。Java註釋的可維護性?
您的團隊開發人員能夠維護帶註釋的代碼,您的真實體驗是什麼?
我覺得它分爲註釋的兩種用法 - 註釋提供類的「描述」與註釋以提供類的「依賴性」。
我很滿意使用類的註釋'描述' - 這是屬於該類的東西,註釋有助於做一個簡短的版本 - JPA註釋屬於這個。但是,我並不喜歡'依賴'註釋 - 如果直接將依賴關係放在類上 - 即使它是在運行時根據註釋而不是在編譯時在類中確定的 - isn'那破壞依賴注入? (也許精神上而不是規則...)
它可能是個人喜好,但我像一個大的XML文件,其中包含我的應用程序的所有依賴信息 - 我認爲這是'應用程序配置'而不是「班級配置」。我寧願搜索一個已知位置,而不搜索應用中的所有類。
我個人的經驗是,對於大多數開發人員來說,處理註釋通常比處理標準Java XML配置地獄要容易得多。對於像JPA和Spring測試這樣的東西,它們是絕對的生命保護者。
關於註釋的好處是,他們在你的類上進行配置自我記錄。現在,您不需要搜索龐大的XML文件來試圖找出框架如何使用您的課程,您的類會告訴你。
通常情況下,像這樣的變化問題是,習慣它們只是需要時間。包括開發者在內的大多數人都拒絕改變。我記得當我開始與Spring合作。在頭幾周我想知道爲什麼有人會忍受與之相關的頭痛。然後,幾周後,我想知道如果沒有它,我會如何生活。
我絕對是愛註釋。我使用它們從Hibernate/JPA,Seam,JAXB ....我可以做的任何事情。國際海事組織沒有什麼比開發一個XML文件更糟糕,只是爲了找出如何處理一個類。
讓我的眼睛註釋讓班級自己說話。另外,註釋(希望)是IDE內容的一部分,而XML配置通常是您自己的。
但是,它可能會涉及到XML配置和註釋如何被任何特定庫實際使用(大多數都提供這兩種),以及使用了什麼類型的註釋。我可以想象,定義某些特定於構建(例如,文件/ url路徑)的註釋可能實際上更容易作爲XML配置。
它非常依賴IDE支持。我覺得註釋應該通過IDE中的代碼與代碼保持同步,但是對此的支持有點欠缺。
E.g.舊版本的IDEA會警告你是否覆蓋沒有@Override的函數,但如果你改變了方法簽名(或超類簽名)並且破壞了關係,則不會刪除@Override標籤。
沒有支持,我發現他們添加元數據到代碼的麻煩的方式。
我個人覺得你提到的具體用例(自動生成web表單)對於註釋來說是一個很好的用例。任何形式的「框架」場景,您可以編寫簡化的代碼,並讓框架根據一些建議(又名註釋)執行沉重的(通常是重複性的)提升,我認爲這是註釋的理想用例。
我很好奇爲什麼你不要像這種情況下的註釋,你認爲是什麼「維護負擔」? (並且,我不是想侮辱你的立場,只是瞭解它)。
一點都不侮辱。 我們曾經讓自定義標籤在JSP中爲我們做了所有重複/容易出錯的工作,因此它開始時非常輕便。開發人員熟悉它。從10,000英尺或在牀單下方不難追蹤。 JSP非常容易遵循,所以如果出現問題,調試很簡單。 新系統難以添加和/或更改。我們也有一組開發人員在學習使用它時會遇到麻煩。當顯示器出現問題時,通過調試可以讀取大多數開發人員不知道 – 2009-10-08 18:12:18
的代碼,因此,聽起來您的問題不在於註釋,而在於消耗註釋的框架。如果是這樣,那麼無論你使用註釋,配置文件還是其他,這個問題都是一樣的。 – james 2009-10-08 18:34:15
你怎麼使用註釋?我不認爲這裏有一個答案,我認爲這取決於你如何使用它們。 – james 2009-10-08 16:46:29
非常好的問題,因爲在這種情況下這可能很重要。 親註釋開發者爲我們的Web應用程序創建了一個框架。該應用使用Spring。註釋根據Command對象中的項目自動構建Web表單,並避免完全使用JSP。 最初沒有提到它,因爲我對一般答案很好奇;我也很好奇具體的答案。 – 2009-10-08 17:04:31
碰撞後來的評論:
我們曾經讓自定義標籤在JSP中爲我們做了所有重複/容易出錯的工作,因此它非常輕便。開發人員熟悉它。不管從10,000英尺還是在牀單下都不難,所以當出現問題時,調試就很簡單了。
新系統難以添加和/或更改。我們也有一組開發人員在學習使用它時會遇到麻煩。當顯示器出現問題時,通過調試可以讀取大多數開發人員不熟悉的代碼。 – 2009-10-08 18:14:27