Saya terkadang menemukan kode yang mirip dengan contoh berikut (apa fungsi ini tidak persis di luar lingkup pertanyaan ini):
function doSomething(value) {
if (check1(value)) {
return -1;
}
else if (check2(value)) {
return value;
}
else {
return false;
}
}
Seperti yang Anda lihat, if
, else if
dan else
pernyataan yang digunakan dalam hubungannya dengan return
pernyataan. Ini tampaknya cukup intuitif untuk pengamat biasa, tapi saya pikir akan lebih elegan (dari perspektif pengembang perangkat lunak) untuk menghapus else
-s dan menyederhanakan kode seperti ini:
function doSomething(value) {
if (check1(value)) {
return -1;
}
if (check2(value)) {
return value;
}
return false;
}
Ini masuk akal, karena segala sesuatu yang mengikuti return
pernyataan (dalam lingkup yang sama) tidak akan pernah dieksekusi, membuat kode di atas secara semantik sama dengan contoh pertama.
Manakah di atas yang lebih cocok dengan praktik pengkodean yang baik? Apakah ada kekurangan pada kedua metode sehubungan dengan keterbacaan kode?
Sunting: Saran rangkap telah dibuat dengan pertanyaan ini disediakan sebagai referensi. Saya percaya pertanyaan saya menyentuh topik yang berbeda, karena saya tidak bertanya tentang menghindari pernyataan rangkap seperti yang disajikan dalam pertanyaan lain. Kedua pertanyaan berusaha mengurangi pengulangan, meskipun dengan cara yang sedikit berbeda.
-1
adalah angka, false
adalah boolean, dan value
tidak ditentukan di sini sehingga bisa berupa semua jenis objek.
value
sebenarnya adalah bilangan bulat. Jika itu bisa apa saja maka itu bahkan lebih buruk.
else
lebih kecil, masalah yang lebih besar adalah Anda jelas mengembalikan dua tipe data dari satu fungsi, yang membuat API dari fungsi tersebut tidak dapat diprediksi.