Yeni bir projede, bayttan kilobayt kibibite dönüştürmem gerekiyordu . Kod yeterince basitti:
var kBval = byteVal / 1024;
Bunu yazdıktan sonra, fonksiyonun geri kalanını çalışmaya & devam ettirdim.
Fakat daha sonra, koduma yalnızca bir sihirli sayı yerleştirip girmediğimi merak etmeye başladım . Bir kısmı bunun iyi olduğunu söylüyor, çünkü sayı sabit bir sabittir ve kolayca anlaşılması gerekir. Ama benim bir başka tarafım, tanımlanmış bir sabit gibi sarılırsa çok net olacağını düşünüyor BYTES_PER_KBYTE
.
Peki, iyi bilinen sabitler gerçekten büyülü olsun ya da olmasın?
İlgili sorular:
Sayı ne zaman sihirli bir sayıdır? ve Koddaki her sayı "sihirli sayı" olarak mı kabul edilir? - benzer, ancak sorduğumdan çok daha geniş sorular. Benim sorum, bu sorularda ele alınmayan bilinen sabit sayılara odaklanmıştır.
Sihirli Sayıları Silme: "Hayır" deme zamanı ne zaman? aynı zamanda ilişkilidir ancak sabit bir sayının sihirli bir sayı olup olmadığına karşı yeniden düzenlemeye odaklanmıştır.
1024
, çünkü aksi halde dev ekibiniz tüm zamanını "kilobayt" mı yoksa "kibibit" mi olduğunu tartışarak geçirir.
#define
KIBI
1024 olarak, MEBI
1024 * 1024 olarak ...
ZERO=0, ONE=1, TWO=2
programların başka dillere taşınması gibi (veya programlayıcılar dillerini değiştirirken davranışını değiştirmez) gibi sabitleri göreceksiniz ve orada da göreceksiniz ve asla birinin asla değişmemesi için dua etmelisiniz ONE=2
…
FOUR_HUNDRED_FOUR = 404
. Değişmezler yerine sabit dizeleri kullanma konusunda militan oldukları başka bir projede çalıştım, bu yüzden kod gibi görünen onlarca satır vardı ,DATABASE = "database"