Ya, Anda dapat menggunakan nama multi-karakter untuk variabel tipe, asalkan dibedakan dengan jelas dari nama kelas.
Ini berbeda dari konvensi yang disarankan oleh Sun dengan diperkenalkannya obat generik pada tahun 2004. Namun:
- Ada lebih dari satu konvensi.
- Nama multi-karakter konsisten dengan gaya Java lainnya, seperti gaya Google untuk Java .
- Nama-nama yang dapat dibaca (kejutan!) Lebih mudah dibaca.
Keterbacaan
Dalam beberapa antarmuka saya menulis, saya ingin memberi nama parameter tipe generik dengan lebih dari satu karakter agar kode lebih mudah dibaca.
Keterbacaan itu bagus.
Membandingkan:
public final class EventProducer<L extends IEventListener<E>,E>
implements IEventProducer<L,E> {
untuk:
public final class EventProducer<LISTENER extends IEventListener<EVENT>,EVENT>
implements IEventProducer<LISTENER, EVENT> {
atau, dengan konvensi multi-karakter 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> {
Gaya Google
The Google Java Style Guide memungkinkan kedua nama huruf tunggal dan multi-karakter kelas-seperti nama yang diakhiri dengan T.
5.2.8 Ketikkan nama variabel
Setiap jenis variabel diberi nama dalam salah satu dari dua gaya:
Sebuah huruf kapital tunggal, opsional diikuti dengan angka tunggal (seperti E
, T
, X
, T2
)
Sebuah nama dalam bentuk digunakan untuk kelas (lihat Bagian 5.2.2, nama-nama kelas ), diikuti oleh huruf T (contoh: RequestT
, FooBarT
).
Masalah
“Tanpa konvensi ini, akan sulit untuk membedakan antara variabel tipe dan kelas biasa atau nama antarmuka.” - dari tutorial Oracle, "Jenis umum"
Nama karakter tunggal bukanlah satu-satunya cara untuk membedakan parameter tipe dari nama kelas, seperti yang telah kita lihat di atas.
Mengapa tidak mendokumentasikan arti parameter type di JavaDoc?
Memang benar @param
elemen JavaDoc dapat memberikan deskripsi yang lebih panjang. Tetapi juga benar bahwa JavaDocs belum tentu terlihat. (Misalnya, ada bantuan konten di Eclipse yang menunjukkan nama parameter tipe.)
Nama parameter tipe multi-karakter tidak mengikuti konvensi Oracle!
Banyak konvensi asli Sun diikuti hampir secara universal dalam pemrograman Java.
Namun, konvensi khusus ini tidak.
Pilihan terbaik di antara konvensi yang bersaing adalah masalah opini. Konsekuensi memilih konvensi selain Oracle dalam kasus ini kecil. Anda dan tim Anda dapat memilih konvensi yang paling sesuai dengan kebutuhan Anda.