Haruskah variabel tersebut diberi nama Id atau ID? [Tutup]

126

Ini agak menyolok, tetapi saya telah melihat beberapa orang menggunakan Idseperti pada:

private int userId;
public int getUserId();

dan lainnya menggunakan:

private int userID;
public int getUserID();

Apakah salah satu dari ini nama yang lebih baik dari yang lain? Mengapa? Saya telah melihat ini dilakukan sangat tidak konsisten dalam proyek-proyek besar. Jika saya harus menetapkan standar yang akan menjadi akrab bagi kebanyakan orang? Yang merupakan standar konvensional?

Adam
sumber
40
Konsistensi adalah hal terpenting yang penting. Baik itu unta, atau garis bawah atau yang lainnya. Bersikaplah konsisten.
38
Lihatlah XML API bahasa Anda untuk melihat bagaimana mereka melakukannya. Kelas nama Java suka SAXParserdan DOMException. Nama kelas NET suka XmlDocument. Berdasarkan itu, saya akan mengatakan "ID" di Jawa, "Id" di C #.
luiscubal
1
Tetapi pengidentifikasi huruf besar, dengan konvensi, digunakan di Java untuk bidang statis, sehingga nama "ID" untuk bidang dasar bukan yang terbaik. Dan ada konsistensi ...
Danubian Sailor
8
Apakah Anda akan menyebutkan variabel EGOdan SuperEGO? Saya kira tidak. ;)
kojiro
4
Apa?! Konsistensi? Di mana perang kemarahan ?! Itu saja, saya dengan ini mencalonkan diri saya sebagai penjaga dari sintaks kasus unta sakral dan dengan ini menyatakan bahwa melakukannya dengan huruf kapital semua untuk nama samaran adalah untuk noobs. Juga, memang benar ingin memiliki gulungan kertas toilet dari atas kecuali jika Anda memiliki kucing yang bosan dan melakukan hal-hal aneh, dalam hal ini mereka memiliki waktu yang lebih sulit mengurai kertas toilet untuk menggulung dari bawah sehingga bid'ah seperti itu dapat diterima untuk pemilik kucing. Saya tidak tahu mengapa saya harus memutuskan itu. Bob penjaga api suci arah toilet-roll sibuk, kurasa.
Erik Reppen

Jawaban:

56

Aturan paling penting untuk diikuti dalam kasus-kasus ini adalah konsistensi: Lakukan seperti yang dilakukan orang lain.

Misalnya, lihat API XML bahasa Anda untuk melihat bagaimana mereka melakukannya.

Kelas nama Java seperti SAXParser dan DOMException , .NET nama kelas seperti XmlDocument .

Berdasarkan itu, saya akan mengatakan "ID" di Jawa, "Id" di C #.

Namun, saya telah melihat bahwa Java EE 6 memiliki anotasi bernama @Id(lihat dokumentasi ), sehingga tampaknya Java menganggap "Id" sebagai kata biasa.

luiscubal
sumber
@Id menunjuk ke nama kelas anotasi, bukan nama variabel. Contoh yang salah.
jwenting
3
SAXParser bisa jadi (dan untungnya tidak) SimpleAPIforXMLParser (atau bahkan SimpleApplicationProgramingInterfaceforExtesibleMarkupLanguageParser). Setiap huruf kapital adalah awal dari kata. Jadi, bahkan di java itu harus "Id"
user470365
2
@jwenting Masalahnya adalah mencari tahu apakah "id" dianggap seperti sebuah kata atau seperti dua kata. @Idmengatakan bahwa itu adalah satu kata, jadi nama variabelnya adalah "id".
luiscubal
Tidak. SAX adalah akronim sementara Id tidak.
nalply
8
Anda benar tentang penggunaan Iddi C # (dan .NET secara umum), tetapi untuk alasan yang berbeda. Aturannya adalah huruf besar semua huruf dari akronim 2 huruf (mis. IPAddress) Dan hanya huruf besar huruf pertama dari akronim yang lebih panjang (seperti contoh yang XmlDocumentAnda berikan). Tapi Iddan Okapakah pengecualian untuk aturan ini, disebutkan secara khusus. Untuk penjelasan singkat selengkapnya, lihat Capitalization Rules for Acronymsbagian Capitalization Conventionsartikel. Tetapi bahkan Microsoft melanggar aturan yang (misalnya DbConnectionvs DBNull)
Allon Guralnek
110

Konsistensi adalah raja; pilih satu atau yang lain, tetapi lakukan secara konsisten di mana-mana.

Yang mengatakan, saya lebih suka variasi pertama, karena itu tidak melanggar camelCase (melakukan itu berarti Anda memiliki dua aturan gaya untuk diingat, bukan hanya satu).

Dua huruf kapital kadang-kadang digunakan karena ini , tetapi ID benar-benar hanya bentuk pengesahan identitas.

Robert Harvey
sumber
18
Saya tidak akan menyukainya jika ada program komputer yang mencoba mengakses id saya.
Blrfl
1
userIdOfSender
Sean McSomething
19
@SeanMcSomething: Ya. SenderUserId
Robert Harvey
5
Sementara saya setuju dengan Anda bahwa "Id" adalah cara yang lebih disukai saya dapat melihat di mana kebingungan itu terjadi: Dalam percakapan sehari-hari kita sebenarnya mengatakannya seolah-olah itu adalah akronim, seperti dalam "bisakah saya melihat ID Anda?"
500 - Kesalahan Server Internal
3
Lihatlah akronim lain dalam peti unta. Ada SoapProtocol, bukan SOAPProtocol. ID adalah kependekan dari dokumen identitas, jadi saya tidak melihat mengapa itu harus diperlakukan dengan cara yang luar biasa dalam kasus unta. Yang mengatakan, saya lebih suka userID digunakan secara konsisten daripada userId dan userID digunakan secara tidak konsisten dalam program saya.
Neil
76

TL; DR: Dalam konteks pustaka kelas .NET, Microsoft menyarankan Anda menggunakan Id. Ini sedikit kontra-intuitif, karena ini adalah contoh langka dari singkatan yang diperbolehkan / direkomendasikan (singkatan umumnya disukai).

Jika kita berbicara tentang konvensi pustaka kelas C # atau .NET, Microsoft memiliki beberapa pedoman penamaan yang didefinisikan dengan cukup baik . Mereka dipikirkan dengan baik, dengan banyak penjelasan tentang berbagai masalah - sebenarnya, setiap pengembang harus meluangkan waktu untuk membaca seluruh bagian Pedoman Desain .

Ketika datang ke akronim , aturan praktisnya adalah: untuk akronim dua huruf, Anda cenderung menjaganya dalam huruf besar (di mana kasus Pascal berlaku), jadi mis. IOStreamMungkin nama kelas. Untuk akronim yang lebih panjang, Anda mengurangi huruf besar dari akronim, misalnya XmlDocumentatau HtmlParser. Ini sebenarnya aturan yang sebagian besar tidak ambigu (tidak ada kebingungan tentang di mana satu kata berakhir dan yang berikutnya dimulai, kecuali jika Anda menggunakan akronim dua huruf), dan Anda terbiasa melakukannya dengan sangat cepat.

Jadi, apakah itu ID, atau Id? Menurut Microsoft, itu mungkin bukan yang Anda pikirkan:

Singkatan berbeda dari singkatan karena singkatan lebih pendek dari satu kata. Misalnya, ID adalah singkatan untuk pengidentifikasi . Secara umum, nama perpustakaan tidak boleh menggunakan singkatan.

Dua singkatan yang dapat digunakan dalam pengidentifikasi adalah ID dan OK. Dalam pengidentifikasi berbasis Pascal mereka harus muncul sebagai Id, dan Ok. Jika digunakan sebagai kata pertama dalam pengidentifikasi berbasis unta, masing-masing akan muncul sebagai id dan ok.

Secara anekdot, saya tidak benar-benar yakin kapan perbedaan ini mulai muncul dalam pedoman, tetapi beberapa tahun yang lalu (sekitar 3.0 / 3.5) tren penamaan umum di perpustakaan kelas berubah dari ID ke Id.

Daniel B
sumber
1
Ini adalah pedoman yang biasanya saya ikuti. Karena id adalah singkatan dan bukan akronim, saya selalu lebih suka menggunakan 'Id'.
Toby
Saya menggunakan ID karena itu merusak konvensi dan menonjol sebagai unik, dan saya suka ironi itu :)
RhysW
Saya pikir Microsoft salah. ID adalah inisialisme untuk Dokumen Identitas, bukan kependekan dari identitas. (Dengan pedas, akronim dapat diucapkan.)
Tom Hawtin - tackline
@ TomHawtin-tackline Anda membuat poin yang menarik, meskipun saya curiga itu tergantung pada konteksnya. Sesuatu seperti properti IDNumber pada objek Orang akan masuk akal, tetapi untuk VehicleId dibaca sebagai "Dokumen Identitas Kendaraan" versus "Identifier Kendaraan"? Dalam konteks pemrograman, pengidentifikasi adalah kata yang cukup umum untuk apa pun yang secara unik mengidentifikasi contoh, dan saya berpendapat bahwa itu lebih berlaku di sini.
Daniel B
@DanielB Dalam bahasa komputer, bahkan SQL, "pengenal" biasanya merujuk pada nama, seperti nama kolom. Biasanya itu disingkat menjadi "ident". Kendaraan adalah contoh yang menarik karena ada skema VIN (Nomor Identifikasi Kendaraan) yang sudah ada. Dalam konteks pemrograman tipikal, "dokumen" untuk suatu entitas adalah angka (bahkan bisa berupa kemampuan yang tidak bisa dilewatkan).
Tom Hawtin - tackline
15

Saya membaca penjelasan yang sangat bagus di beberapa dokumen konvensi pengkodean. CamelCase harus selalu digunakan untuk akronim dan singkatan, karena lebih mudah untuk membedakan batas kata (dibandingkan XmlIdWriterdengan XMLIDWriter).

emas
sumber
12
Inilah ide yang lebih baik untuk membedakan batas kata: batas kata yang sebenarnya! xml_id_writer.
Kaz
4
@ Ka Yah, duh! Namun, CamelCase digunakan secara tradisional dalam beberapa bahasa dan itu akan terlihat agak tidak tepat untuk menggunakan garis bawah dalam situasi seperti itu. Konsistensi adalah raja, seperti yang disebutkan sebelumnya.
gilden
1
Menggunakan CamelCase hanya karena pustaka inti dari beberapa bahasa menggunakannya bukan konsistensi, melainkan kesesuaian.
Kaz
3
@ Ka: Anda memiliki pertempuran yang lebih besar untuk dilawan di toko Anda daripada konvensi kode.
Robert Harvey
2

Seperti yang dapat kita lihat di fungsi default JavaScript getElementById (); Id ditulis dalam case unta ...

Gunakan 'id' jika menggunakan dengan garis bawah. Contoh: user_id

Gunakan 'Id' jika memberi nama var tanpa garis bawah untuk membedakan kata-kata yang berbeda. Contoh: userId

Jika itu adalah satu kata variabel itu harus dalam huruf kecil lengkap, jika beberapa kata var kemudian menggunakan huruf Camel lebih rendah. Contoh: thisIsExample

Tetapi saya sangat tidak akan merekomendasikan 'ID' semua dalam CAPS karena kami biasanya menggunakan semua huruf besar untuk mendefinisikan KONSTAN.

Sukrit Gupta
sumber
Di paragraf ketiga Anda, contoh Anda sepertinya tidak cocok dengan teks Anda?
ruakh
@ruakh thanx .. Diperbaiki ..
Sukrit Gupta
0

Pertama, hindari singkatan.

Kedua, Jika singkatannya sangat terkenal, saya sarankan untuk menggunakan case unta.

Itu karena Anda tidak perlu mempertimbangkan arti itu. perlakukan saja sebagai kata normal

Sungguk Lim
sumber