Saya telah melihat banyak kode memiliki deklarasi seperti Class clazz
, dari mana asalnya? Apakah ini semacam konvensi? Saya pikir 'clazz' bahkan bukan kata bahasa Inggris, tidak ada artinya sama sekali, bagaimana mungkin begitu banyak pemrogram menyebut nama yang salah secara kebetulan?
java
naming-conventions
Penggergaji
sumber
sumber
сlass
ejaan dengan Cyrillicс
sebagai alternatif.Jawaban:
clazz
telah digunakan di Jawa sebagai pengganti kata "class" sejak JDK 1.0. "class" adalah apa yang Anda inginkan, tetapi menyingkat atau memasukkan sampah ("a", "the", "_", dll) mengurangi kejelasan.clazz
hanya kata kelas. Penutur bahasa Inggris "Internasional" (mereka yang membaca Bahasa Inggris Inggris dan Amerika) digunakan untuk mentransposisi 's' dan 'z'.Karena Java telah mengungkapkan sumber dan budaya yang sesuai sejak awal, kode Java dan tutorial yang bermanfaat mengambil konvensi yang sama. Itulah salah satu hal hebat tentang ekosistem Jawa, yang saya pikir telah menjadi bagian penting dari keberhasilannya.
sumber
Foo
didefinisikan pada ruang lingkup kelas danfoo
pada ruang lingkup variabel lokal harus sah, tetapi semua referensi ke variabel ruang lingkup dalam lingkup lokal harus memerlukanthis.Foo
. Aturan seperti itu akan ...someThing
di beberapa tempat dansOmEtHiNg
pada orang lain.fnord
dan bidang yang dipanggilfnord
tanpa masalah, huruf besar , atau kata-kata yang tidak masuk akal. Saya pikir itu akan cukup sebagai contoh balasan.Karena mereka tidak dapat menggunakan kata yang ingin mereka gunakan
class
. Itu sudah dipesan.sumber
Itu hanya karena 'kelas' adalah kata kunci yang dipesan, karenanya
Class class
tidak diperbolehkan. Karena itu Anda akan melihatClass clazz
atauClass cls
.sumber
Class
karena ada begitu banyak kelas dalam proyek tertentu yang menyebut kelas itu kelas THE sepertinya tidak ada gunanya. Saya juga tidak bisa memikirkan alasan untuk memanggil VARIABELclass
...ClassInformation
,ClassMetadata
atau sesuatu yang serupa. Setiap kelas adalah kelas, tetapi Anda tidak menyebutkan semuanyaClass
, Anda menamainya berdasarkan fungsi utama mereka.Itu datang ke kompiler yang sebenarnya dan kemampuannya untuk membedakan apa arti token dalam konteksnya. Namun, dalam kasus khusus ini, ketidakmampuan kompiler untuk membedakan apa arti token
class
dalam konteks yang berbeda. Merupakan aturan yang keras dan cepat bahwaclass
, terlepas dari konteksnya, digunakan untuk menunjukkan deklarasi kelas, dan karenanya merupakan kata yang dilindungi undang - undang . Itu sesederhana dan serendah mungkin.Jika Anda merasa harus, Anda bisa menulis kompiler Java Anda sendiri untuk memasukkan aturan kontekstual yang akan memungkinkan Anda untuk digunakan
class
sebagai nama variabel. Meskipun saya pikir akan jauh lebih baik menggunakan waktu Anda untuk hanya menggunakanclazz
atauklass
- mungkin akan baik untuk kesehatan Anda juga.sumber
Saya melihatnya pertama kali di puzzle Josh Bloch. Tapi saya cukup yakin itu digunakan lebih awal oleh pengembang lain. Josh Bloch membuatnya lebih terkenal.
sumber
Java tidak memiliki fitur yang memungkinkan Anda menggunakan kata kunci sebagai pengidentifikasi, tidak seperti C # dengan
@
awalannya (mis.@class
Adalah pengidentifikasi yang valid.)sumber
class
dan$class
keduanya merupakan pengidentifikasi yang valid (tetapi berbeda) di JVM. Tidak ada pengidentifikasi yang dapat Anda tulis dalam file sumber Java yang diterjemahkan ke"class"
dalam VM.Itu hanya kata bahasa Inggris yang diganti (Equavalent) oleh Kata Kunci Kelas Kata Kunci, untuk membuat orang mengerti bahwa itu adalah Kelas. dan hampir meningkatkan keterbacaan Kode
Tidak ada Logika besar yang terlibat dalam hal ini
sumber
Deklarasi
Class clazz
populer di dunia Jawa, tetapi mungkin canggung bagi pendatang baru dan pemeriksa ejaan. Saya pernah mendengar beberapa orang mengatakan bahwa itu harus dihindari sesuai dengan prinsip paling tidak heran .Karena dimungkinkan untuk mengatakan bahwa suatu
Class
objek mewakili suatu tipe , saya pribadi lebih suka mendeklarasikan variabel seperti ituClass type
.sumber
Kami menggunakan clazz karena class adalah tipe header. Misalnya, Anda menggunakan kelas di sini:
dan di sini:
Jadi sayangnya, kita harus menggunakan nama alternatif seperti clazz.
sumber
Sederhananya,
class
memiliki kelas yangclazz
tidak.sumber