8
我一直覺得它非常有用,堅持在Java Beans命名約定:getX()
,setX()
,isX()
,等等。我認爲Java Bean的命名約定提供了幾個主要優點:總是使用Java Beans命名約定是個好主意嗎?
- 通過代碼看時,你可以立即確定一種方法的目的。
- 查看API文檔時,由於Java文檔的字母順序,所有方法都分組在一起。
- 使用任何IDE的代碼完成功能時,通過簡單直觀的方式進行排序並找到要查找的方法。這又是由於IDE的字母順序。
我知道有很多類是不使用Java Beans命名約定的Java API的一部分。一個例子是ArrayList
,其具有諸如size()
的方法。
其實我有兩個主要問題:
- 它是一個好主意,總是嘗試使用Java組件的命名約定?如果不是,爲什麼?
- 我知道
ArrayList
是在Java Beans發佈之前編寫的。對於所有(或至少大多數)新內容,Oracle是否習慣使用Java Beans命名約定?
下面是更多的讓人們去思考,而不是一個實際的問題。
正如我上面所說的,我一直堅持使用Java Bean命名約定。我認爲他們在很多方面提供了很多優勢。我認爲最大的問題是,沒有Java組件,有很多人使用混亂的命名約定
我個人認爲其後面應始終堅持,我很好奇,看看別人怎麼想這件事:
- 如果方法名稱是名詞,則該方法預計會返回一個值。
- 如果方法名稱是一個動詞,該方法應該總是做一些事情。如果該方法返回一個值,則返回的值應與執行的操作相關。
- 如果方法名稱是形容詞,則不應單獨使用該名稱。例如,
big()
應該是isBig()
。 - 不應該單獨使用不是對象的隱式屬性的名詞。
例如:size()
是House
對象的適當方法,但door()
不是。這是因爲size
是由本質決定的house
的繼承屬性。house
的物理上不需要有door
。
而不是door()
,該方法應命名爲getDoor()
。 - 如果方法名稱符合多個詞性,該方法總是需要用戶端進行不必要的思考。因此,該方法可能應該重新命名。例如:
比方說,我有一個方法叫做profile()
。根據它屬於的類別,profile()
可能是動詞或名詞。我可以分析一些東西,或者我可以獲取配置文件。將該方法的名稱更改爲getProfile()
或doProfiling()
將增加澄清。
我會說這會產生一定數量的個人意見。就我個人而言,我更喜歡使用bean命名約定,所以當我想嘗試「獲取」或「設置」一個值時,這些就是我開始搜索時使用的方法簽名。 Oracle/Sun是否習慣使用更新的API遵循這些約定,我不會說真的,這是一種羞恥 – MadProgrammer
類有大寫的每個單詞(例如ArrayList)。 –
偉大的問題,也基於觀點:/ 第一次我給了upvote和一個標誌... –