Terkadang suatu algoritma dapat ditulis dalam dua cara:
- Cara pendek dan mewah; atau
- Cara yang lebih panjang dan mudah dipahami.
Misalnya, ini cara yang lebih panjang dan lebih mudah untuk menyalin string source
ke dest
dalam C:
*dest = *source;
while (*source != '\0') {
source++;
dest++;
*dest = *source;
} (true);
Dan ini cara yang pendek dan mewah.
// Copy string source to dest
while (*dest++ = *source++);
Saya selalu mendengar dan membaca bahwa kode mewah harus dihindari, dan saya cenderung setuju. Tetapi bagaimana jika kita mempertimbangkannya? Anggaplah, seperti dalam contoh di atas, kita memiliki kode yang tidak diomentari, lebih panjang dan lebih mudah dipahami, dan kode mewah yang dikomentari dengan baik? Apakah kode yang tidak mewah masih disukai?
EDIT: Banyak yang mengomentari nama variabel, jadi saya telah memodifikasi kode contoh agar tidak menjadikannya faktor ketika lebih memilih yang lain. Saya mencoba untuk menghapus penugasan ganda pada contoh pertama, tetapi itu hanya membuat kode kurang dibaca.
Mungkin ini bukan contoh terbaik karena banyak yang menemukan kode 'mewah' lebih mudah dibaca dan dimengerti daripada kode yang lebih panjang. Idenya adalah memiliki satu kode yang lebih panjang yang jauh lebih mudah dipahami daripada kode yang sangat pendek namun rumit.
EDIT2: Ini contoh baru yang saya dapat dari SO :
Versi mewah berkomentar:
//direct formula for xoring all numbers from 1 to N
int Sum = (N & (N % 2 ? 0 : ~0) | ( ((N & 2)>>1) ^ (N & 1) ) );
Versi panjang tanpa komentar:
int Sum = 0;
for (int i = 1; i < N; ++i)
{
Sum ^= i; //or Sum = Sum ^ i;
}