通用名称
泛型類型參數名稱通常包含一個大寫字母字符。 如果您開始閱讀有關泛型的官方ORACLE文檔,則第一個示例是
/*** Generic version of the Box class.* @param <T> the type of the value being boxed*/ public class Box<T> {// T stands for "Type"private T t;public void set(T t) { this.t = t; }public T get() { return t; } }通用類型的名稱為T 一個字母,意義不大,通常與其他標識符命名樣式相對。 它僅廣泛用于泛型。 奇怪。 是什么原因呢?
到目前為止,我已經聽到了以下論點:
- 一個類或方法不需要很多類型變量名,因此您不會用完ABC的字母。
- 基于這種推理,我們還應該使用一個字符方法名稱嗎?
- 因為有JavaDoc,所以一個字符不會固有地解釋類型不是問題。 您可以解釋類型名稱的實際含義。
- 而且我們還應該忘記我們所學到的有關干凈代碼和變量命名的所有內容。
- 具有一個字符的類型名稱使它們與變量,方法和類名稱以及常量名稱區分開。
- 這是一個好點。
- 但是Google Code Style允許您使用多種字符類型的名稱。
- 哦是的
然后怎樣呢?
如果您不喜歡泛型的單個字符命名,則可以使用_或$前綴來命名它們。 這是您可以在stackoverflow上看到的建議。 至于我:這很奇怪。 使用$可以使我感到“歡欣”,溫暖的感覺使我想起了我在編寫Perl時的青春。 我不再這樣做了,這是有充分理由的。 時代改變了,技術改變了,我改變了。
$通常由編譯器和某些代碼生成器用來命名生成的字段和方法。 在Java源代碼級別上使用$可能會導致某些命名沖突,導致編譯器難以找到合適的名稱,但是在這方面,當前版本的Java編譯器相當容易出錯。 他們只是一直嘗試通過一些簡單的算法來找到一個合適的名稱,直到找到一個不會與任何Java源代碼名稱沖突的名稱為止,因此這不會成為問題。
下劃線 :嗯,實際上是我們過去使用的東西,而不是空間。 在舊的矩陣打印機上,下劃線字符打印得很差,以至于您無法將其與空格區分開,因此使用多字變量名稱是一個丑陋的竅門。 由于名稱開頭的下劃線是一個完全反模式的恕我直言,實際上是使用相同的名稱來命名兩件事。 幾乎就像沒有下劃線字符一樣。
您也可以使用T_前綴,因為這是C ++和C#中的慣例(我不太熟悉T_前綴,對此我不確定)。 但這和沒有T一樣丑陋。
我的喜好是使用有意義的名稱,并在常量的情況下遵循相同的約定。 例如使用
public final class EventProducer<LISTENER extends IEventListener<EVENT>,EVENT> implements IEventProducer<LISTENER, EVENT> {代替
public final class EventProducer<L extends IEventListener<E>,E> implements IEventProducer<L,E> {即使那是我的個人,高級,專業,專家意見,但我不使用它。 為什么? 因為我在團隊中的企業環境中工作。 使用比官方默認設置更具可讀性的內容所獲得的收益并不像辯論和分歧所造成的損害那樣高。 除此以外,新員工還必須適應當地的風格,而且也要花錢。 使用可用但不是最佳的全局樣式比使用良好的局部樣式更好。 忍受它。
我們可以走向全球嗎?
你可以試試。 這是我最多能說的。 如果最初的建議設定編碼標準比1960年代的樣式一字母法更好,那將是更好的選擇,但這已經是歷史了。 損壞已經完成。 而且,這與在OO中引入null的絕妙想法所造成的損害無可比擬。
只要Java仍然存在,我們將只使用一個字符的泛型。 而且由于我快50歲了,所以這段時期比我的壽命更長。 請注意,COBOL仍然有效。 我們應該對Java有所期待。
翻譯自: https://www.javacodegeeks.com/2015/05/generics-names.html
總結
- 上一篇: 使用Junit测试名称
- 下一篇: owncloud安卓最新版(ownclo