Saya sering melihat kode yang menyertakan kesalahan ejaan kata-kata umum yang disengaja menjadi lebih baik atau lebih buruk:
klass
atauclazz
untuk kelas :Class clazz = ThisClass.class
kount
untuk hitungan dalam SQL:count(*) AS kount
Secara pribadi saya menemukan ini mengurangi keterbacaan. Dalam praktik saya sendiri, saya belum menemukan terlalu banyak kasus di mana nama yang lebih baik tidak dapat digunakan - itemClass
atau recordTotal
.
Contoh dari JavaDocs untuk Kelas menunjukkan ini di parameter:
public <U> Class<? extends U> asSubclass(Class<U> clazz)
Apakah ini menunjukkan penggunaan yang wajar?
coding-style
variables
readability
naming
Nicole
sumber
sumber
cls
adalah nama umum (pada kenyataannya, satu idiomatik) untuk variabel / argumen yang meneruskan kelas aktual (yang Anda nyatakan denganclass
kata kunci dan yang semuanya merupakan turunan dari).typedef char ínt
?iñt
. Ada rencana saya untuk dominasi dunia.Class c
).Jawaban:
IMHO, ini ide yang sangat buruk. Kata-kata yang dicadangkan dicadangkan karena suatu alasan, dan melakukan hal ini mengurangi keterbacaan.
Saya juga sepenuhnya setuju dengan poin kedua Anda. Memberi nama variabel
class
, bahkan jika Anda bisa melakukannya, akan sama buruknya dengan memberi namatmp
ataua
. Kelas macam apa? Kelas apa? Nama harus deskriptif.sumber
Panduan Gaya Python menyebutkan masalah ini secara khusus, dan menyarankan:
Ini sepertinya aturan umum yang cukup bagus, dengan asumsi itu tidak bertentangan dengan semantik bahasa tertentu.
sumber
union
kata kunci (seperti dalam C)? Apakah Anda akan menyebutnyafoo
hanya karena seharusnya tidak terlihat seperti ituunion
?cls
adalah nama argumen standar untuk metode kelas. Juga misalnya dalam objek Django memiliki.id
atribut, yang tentu saja bertentangan denganid
fungsi bawaan.merge
metode masih membutuhkan dokumentasi yang secara eksplisit menyatakan bahwa ia menerapkan serikat pekerja dan diganti namanya karena alasan teknis semata.Bau kode.
Kode di atas tidak memberi tahu saya apa pun tentang penggunaan variabel yang dimaksudkan.
Permasalahan yang sama
Kode di atas seharusnya tidak memerlukan string kata kunci ditambahkan ke nama variabel. Jika Anda perlu mengidentifikasi jenis berdasarkan nama variabel, kode Anda terlalu panjang. Kondensasi-refactor.
sumber
Class<T>
parameter, dan ini masuk akal. Jadi saya tidak setuju bahwa ini bau kode.Secara pribadi, saya pikir ini adalah opsi yang sangat valid untuk gaya kode Anda.
Itu adalah kata-kata yang dicadangkan sehingga kompiler tidak harus memutuskan apakah yang Anda maksud adalah mekanik bahasa atau variabel Anda. Dengan mengingat hal itu, itu menyiratkan bahwa mereka mengharapkan orang memiliki kebutuhan untuk variabel seperti kata yang dipesan.
Akan melalui sumber yang dibundel dengan JDK 1.6 R21, saya menemukan 917 kemunculan "clazz". Ternyata, mereka menganggap itu gaya yang bisa diterima.
Bagaimana perasaan tim Anda tentang hal itu? Jika Anda berpikir itu buruk, tetapi 9 orang lain di tim Anda berpikir itu baik, maka Anda harus menggigit peluru dan menerimanya. Selama ada komunikasi tentang apa yang baik dan apa yang tidak, dan Anda membawa masalah yang Anda lihat seperti yang Anda lihat, itu akan baik-baik saja.
Bagaimana tim Anda merasa tentang gaya kode lebih penting daripada pendapat saya, atau orang lain di posting ini . Itu berlaku untuk ini dan keputusan gaya kode lainnya yang mungkin Anda miliki.
sumber
klass
danclazz
itu hal yang buruk. Anda harus konsisten sehingga mereka hanya perlu mempelajarinya sekali saja. Dan idealnya ini dijabarkan dalam pedoman gaya tim juga, jadi itu tidak terlalu mengejutkan.Salah eja yang disengaja untuk menghindari kata-kata yang dipesan adalah ide yang buruk.
Salah ejaan sulit dibedakan dari ejaan yang benar, karena itu membuat kode lebih sulit dibaca.
Kesalahan mengeja sulit untuk diingat, sehingga beberapa kesalahan ejaan yang tidak konsisten cenderung bersaing dalam kode, yang membuat kode lebih sulit untuk ditulis dan lebih sulit untuk dibaca.
Kata-kata yang dicadangkan mengacu pada bahasa yang digunakan untuk memecahkan masalah, bukan masalah itu sendiri. Nama variabel harus menunjuk ke konsep yang terkait dengan masalah.
Oleh karena itu lebih baik untuk memilih alternatif, nama deskriptif, atau jika tidak ada alternatif yang memuaskan, untuk memenuhi syarat kata yang dipesan seperti pada:
sumber
Class clazz
baunya seperti "Saya tidak repot-repot mencoba datang dengan nama baik". Suatu variabel selalu mewakili sesuatu, dan nama yang baik menggambarkan hal itu. Saya menolak membayangkan bahwaclazz
misalnya dalam keadaan apa pun adalah nama terbaik. Apakah itu referensi ke kelas -> class_reference, adalah salinan objek kelas -> class_copy, dll. Mungkin juga menjatuhkan "class" dan hanya menggunakan kata deskriptif, misalnyaDi sini clazz adalah kelas target tempat pemeriksaan dilakukan, jadi
akan lebih baik menggambarkan parameter apa yang digunakan untuk daripada yang akan pernah dilakukan clazz.
sumber
classToBeAccessed
adalah nama baik memang (classToBeChecked
akan mungkin lebih baik).Jika mereka menggunakan nama yang dicadangkan untuk suatu variabel, itu adalah variabel dengan nama buruk. Bahkan jika itu adalah nama yang sah, seperti perangkat lunak Kelas untuk kelas.
Variabel yang namanya buruk adalah tanda kode yang dipikirkan dengan buruk atau kode biasa - berhati-hatilah terhadap gotcha lain dalam Bagian Perangkat Lunak yang Anda pelihara.
sumber
Saya pikir salah eja atau singkatan yang disengaja adalah ide yang baik jika digunakan dengan hati-hati dan konsisten .
Pertimbangkan di Jawa:
Tempat untuk menggunakan salah eja adalah tempat kata yang dicadangkan jelas merupakan kata terbaik untuk pekerjaan itu. Ada dua tempat untuk tidak menggunakan salah eja di mana Anda mungkin tergoda.
Dalam kasus pertama, cukup jelas bahwa kemalasan jarang merupakan kebijakan yang baik untuk membuat kode kualitas. Dalam kasus kedua, pilih variabel yang sangat pendek. Itulah yang dilakukan ahli matematika sepanjang waktu, dan programmer melakukan untuk indeks. Tidak ada alasan untuk membatasi diri Anda melakukan ini untuk indeks jika itu hanya variabel dummy:
Anda tidak kehilangan apa pun dengan nama variabel pendek ketika metode atau struktur kode memberi tahu Anda apa yang harus ada di sana.
sumber
nextMeeting(MeetingRoom r)
banyak. Apa yangmeetingRoom
membawamu ke sana? JikanextMeeting(int meetingRoom)
saya mengerti, tetapi poin saya adalah menggunakan nama variabel pendek ketika informasi tersebut sudah tersedia dari sumber lain .Klass
adalah alternatif ketika ada kata yang dipesan . Saya tidak menyarankan menggunakan salah mengeja saat ejaan asli tersedia!Saya telah melihat kegunaan yang sah
Class klass
ketika melakukan refleksi di mana Anda benar-benar bekerja dengan instanceClass
kelas.sumber
userClass
atau beberapa opsi lainnya.classInstance
lebihklass
.classInstance
cukup berlebihan. Selain itu, saya bisa membayangkan sesuatu seperticlass klass; Object classInstance = klass.newInstance;
.Untuk variabel lokal dan argumen formal, itu tidak masalah.
Nama apa pun boleh saja asalkan tidak sengaja menyesatkan atau mengganggu. Dalam contoh Anda:
tidak masalah apakah variabel lokal tunggal adalah "clazz" atau "klass" atau "cls" atau hanya "c". Saya mungkin hanya akan menyejajarkan ungkapan:
Panjang nama variabel harus terkait dengan ruang lingkup variabel. Untuk variabel lokal dalam metode pendek (dan semuanya harus pendek), nama yang sangat pendek baik-baik saja.
sumber
ClassUtils.loadClass(benchmark.generatedClass())
=>benchmark.generatedClass()
- hilangClassUtils.loadClass
sepanjang jalanSaya pikir salah eja selalu merupakan ide yang buruk. Itu tidak baik pada pembaca Anda. Saya, misalnya, akan bertanya-tanya apakah saya melewatkan sesuatu ketika saya melihat kata itu
klass
. (Apakah yang mereka maksudkanclass
, atau apakah yang mereka maksudkan adalah bajak laut?) Setidaknya bagi saya, semua salah eja yang saya kenal menjengkelkan.Untuk beberapa kasus, di mana kata yang dipesan benar-benar satu-satunya hal penting yang diketahui tentang variabel, saya akan menggunakan alternatif berikut:
Jika itu argumen fungsi, gunakan
aClass
sebagai ganticlass
.Jika itu variabel lokal atau anggota, gunakan
myClass
sebagai ganticlass
.Jika itu accessor, gunakan
getClass()
sebagai ganticlass()
.Tentu saja, awalan yang ditambahkan tidak ada gunanya, dan akibatnya hanya akan digunakan sebagai upaya terakhir. Tapi setidaknya itu tidak mengganggu pengurai mental pembaca Anda, dan itu adalah cara yang gagal untuk menghindari kata-kata yang dicadangkan.
sumber
Satu manfaat untuk pengejaan kreatif, adalah kemampuan pencarian yang lebih baik. Saya pikir jauh lebih mudah untuk melakukan pencarian kode lengkap untuk hal-hal unik, daripada kata-kata umum, di mana terlalu sering Anda akan menemukan semua hal yang salah, dan 1000 di antaranya. Sebagai contoh, saya dulu memiliki kzpg.com. Google yang sekarang dan Anda akan melihat hanya beberapa hit. Ini unik dan karenanya sangat mudah ditemukan.
Tetapi untuk ukuran saya pikir pertanyaan ini adalah salah satu pendapat lebih dari substansi. Saya pribadi tumbuh di Forth di mana itu semua tentang kata-kata, dan banyak dari mereka. Seseorang belajar menjadi sangat kreatif untuk menyelamatkan jari-jarinya. Pada akhirnya saya memiliki sekitar 640.000 karakter, lebih atau kurang di basis sumber saya. Jadi, menjaga kata-kata pendek penting untuk menyelesaikan pekerjaan.
sumber