Pada proyek baru-baru ini, saya perlu mengkonversi dari byte ke kilobyte kibibyte . Kode itu cukup mudah:
var kBval = byteVal / 1024;
Setelah menulis itu, saya mendapatkan sisa fungsi bekerja & pindah.
Tetapi kemudian, saya mulai bertanya-tanya apakah saya baru saja memasukkan angka ajaib dalam kode saya. Sebagian dari diriku mengatakan itu baik-baik saja karena jumlahnya adalah konstanta yang tetap dan harus mudah dipahami. Tetapi bagian lain dari diriku berpikir itu akan sangat jelas jika dibungkus dengan konstanta yang didefinisikan seperti BYTES_PER_KBYTE
.
Jadi, apakah bilangan yang dikenal sebagai konstanta benar-benar ajaib atau tidak?
Pertanyaan-pertanyaan Terkait:
Kapan angka merupakan angka ajaib? dan Apakah setiap angka dalam kode dianggap sebagai "angka ajaib"? - mirip, tetapi pertanyaan yang jauh lebih luas dari yang saya tanyakan. Pertanyaan saya terfokus pada angka konstan terkenal yang tidak dibahas dalam pertanyaan itu.
Menghilangkan Angka Ajaib: Kapan waktunya untuk mengatakan "Tidak"? juga terkait, tetapi difokuskan pada refactoring sebagai kebalikan dari apakah angka konstan adalah angka ajaib atau tidak.
1024
, karena kalau tidak tim dev Anda akan menghabiskan semua waktu berdebat tentang apakah itu "kilobytes" atau "kibibytes".
#define
KIBI
1024, MEBI
seperti 1024 * 1024 ...
ZERO=0, ONE=1, TWO=2
dan ketika program porting ke bahasa lain (atau programer tidak mengubah perilaku ketika mengganti bahasa mereka) Anda akan melihatnya di sana juga dan Anda harus berdoa agar tidak ada orang yang mengubahnya ke ONE=2
...
FOUR_HUNDRED_FOUR = 404
,. Saya bekerja pada proyek lain di mana mereka militan tentang menggunakan string konstan daripada literal, sehingga mereka memiliki lusinan baris dalam kode yang tampak seperti,DATABASE = "database"