はい、クラス名と明確に区別されている限り、タイプ変数には複数文字の名前を使用できます。
これは、2004年にジェネリックが導入されたことでSunが提案した規則とは異なります。
- 複数の規約が存在します。
- 複数文字の名前は、Googleの Java用スタイルなど、他のJavaスタイルと一致しています。
- 読みやすい名前は(驚き!)より読みやすくなっています。
読みやすさ
一部のインターフェイスでは、コードを読みやすくするために、ジェネリック型パラメーターに複数の文字を指定したいと思っています。
読みやすさは良いです。
比較:
public final class EventProducer<L extends IEventListener<E>,E>
implements IEventProducer<L,E> {
に:
public final class EventProducer<LISTENER extends IEventListener<EVENT>,EVENT>
implements IEventProducer<LISTENER, EVENT> {
または、Googleの複数文字の規則を使用:
public final class EventProducer<ListenerT extends IEventListener<EventT>,EventT>
implements IEventProducer<ListenerT, EventT> {
public final class EventProducer<ListenerT extends IEventListener<EventT>,EventT>
implements IEventProducer<ListenerT, EventT> {
Googleスタイル
GoogleのJavaのスタイルガイドでは、単一文字の名前や複数文字のクラスのようなT.で終わる名前の両方が可能
5.2.8タイプ変数名
各型変数は、次の2つのスタイルのいずれかで名前が付けられます。
問題
「この規則がないと、型変数と通常のクラスまたはインターフェース名の違いを見分けるのは難しいでしょう。」– Oracleチュートリアルの「ジェネリック型」
上で見たように、1文字の名前は、型パラメーターとクラス名を区別する唯一の方法ではありません。
JavaDocで型パラメーターの意味を文書化しないのはなぜですか?
@param
JavaDoc要素がより長い説明を提供できることは事実です。しかし、JavaDocsが必ずしも表示されているとは限らないことも事実です。(たとえば、タイプパラメーター名を表示するEclipseのコンテンツアシストがあります。)
複数文字タイプのパラメーター名は、Oracleの規則に従っていません!
Sunの元の規則の多くは、Javaプログラミングでほぼ普遍的に使用されています。
ただし、この特定の規則はそうではありません。
競合する慣習の中からの最良の選択は意見の問題です。この場合、Oracle以外の規則を選択した場合の影響は軽微です。あなたとあなたのチームはあなたのニーズに最も合う大会を選ぶことができます。