Bagi saya, menemukan nama baik untuk sesuatu selalu kembali ke memikirkannya sebagai objek yang harus membenarkan keberadaannya. Bertanya pada diri sendiri:
- Apa yang dilakukan oleh kelas / metode / variabel, yaitu apa tujuan yang lebih luas dan untuk apa?
- Apa yang spesifik tentang tujuannya yang perlu dikomunikasikan, yaitu apa bagian penting yang perlu dimiliki oleh nama itu di dalamnya?
Kebanyakan pengembang akan setuju bahwa keterbacaan selalu sangat penting dalam hal penamaan. Jangan hanya menulis kode sehingga Anda tahu apa yang Anda maksud saat Anda menulisnya, tulislah sehingga seseorang yang melihat kode untuk pertama kalinya di beberapa titik di masa depan tahu apa yang Anda maksud tanpa harus terlalu banyak berpikir. Anda akan menulis kode hanya sekali, tetapi selama masa pakai kode kemungkinan besar harus diedit berkali-kali dan membaca lebih banyak lagi.
Kode harus mendokumentasikan diri sendiri, yaitu, penamaan Anda harus memperjelas apa yang dilakukan sesuatu. Jika Anda perlu menjelaskan apa yang dilakukan oleh baris kode dalam komentar, dan mengubah nama hal-hal yang tidak cukup meningkatkannya, Anda harus secara serius mempertimbangkan refactoring baris itu menjadi metode baru dengan nama deskriptif yang tepat, sehingga membaca metode asli, yang metode panggilan baru menjelaskan apa yang terjadi. Jangan takut memiliki nama panjang; tentu saja Anda tidak boleh menulis novel di kelas / metode / nama variabel, tetapi saya lebih suka memiliki nama yang terlalu panjang dan deskriptif daripada terlalu pendek dan saya perlu mencari tahu apa fungsinya dengan mencari di bawah tenda. Kecuali untuk beberapa pengecualian yang jelas seperti koordinat x / y dan akronim yang umum digunakan, hindari nama dan singkatan karakter tunggal. Memanggil sesuatu "bkBtn" bukannya "backButton"
Sebisa mungkin bahasa Anda, buat kode Anda dibaca seperti kalimat bahasa Inggris. Objek menggunakan kata benda, metode menggunakan kata kerja. Metode Boolean biasanya dimulai dengan "is", tetapi ada banyak opsi lain yang menyampaikan makna lebih baik, tergantung pada use case, seperti "can", "should", atau "does". Tentu saja, tidak semua bahasa bisa sebagus Smalltalk dalam hal ini, tetapi beberapa simbol umumnya dipahami sebagai bagian dari kalimat. Dua konvensi Smalltalk yang secara pribadi ingin saya bahas dalam bahasa lain sebanyak mungkin adalah awalan nama parameter loop dengan "masing-masing", dan awalan parameter metode dengan artikel "a" (atau "an", atau "beberapa" untuk koleksi) . Ini mungkin bukan standar umum di Jawa, dan siapa pun boleh mengabaikan bit ini, tetapi saya menemukan bahwa ini sangat meningkatkan keterbacaan kode. Misalnya (misalnya di Jawa):
public boolean shouldConsiderAbbreviating(List<String> someNames) {
for (String eachName : someNames) {
if (isTooLong(eachName)) {
return true;
}
}
return false;
}
Ini harus dapat dibaca oleh orang-orang yang hanya memiliki sedikit pengetahuan tentang Jawa sebagai sesuatu seperti ini:
Untuk menentukan apakah Anda harus mempertimbangkan untuk menyingkat daftar beberapa nama (yang merupakan string), beralihlah ke beberapa nama, dan untuk setiap nama, tentukan apakah itu terlalu panjang; jika demikian, kembali true
; jika tidak ada yang terlalu panjang, kembalilah false
.
Bandingkan kode di atas hanya dengan menamai argumen strings
dan variabel loop string
, terutama dalam metode yang lebih kompleks. Anda harus melihat lebih dekat untuk melihat perbedaannya daripada penggunaannya yang jelas dari pandangan sekilas pada namanya.