Така се нарича, защото не можем да разберем по никакъв начин какво означава , когато го видим вътре в скрипта и е включено от авторът.
Пример:
if (22 == $foo) { start_thermo_nuclear_war(); }
else if (19 == $foo) { refund_lotso_money(); }
else if (16 == $foo) { infinite_loop(); }
else { cry_cause_im_lost(); }
В горният пример където са 22 и 19 може ли да разберете какво означават? Ако променим едно от числата или всичките бяха погрешни как вие щяхте да знаете?
Употреба на магични числа определя програмист като аматьор повече от каквото и да е друго нещо. Такъв програмист никога не е работил в екип.
Вместо магически числа използувайте истинско име, описвайки за какво ще се използва или какво съдържа. Може да дефинирате константи.
Пример:
define("PRESIDENT_WENT_CRAZY", "22");
define("WE_GOOFED", "19");
define("THEY_DIDNT_PAY", "16");
if (PRESIDENT_WENT_CRAZY == $foo) { start_thermo_nuclear_war(); }
else if (WE_GOOFED == $foo) { refund_lotso_money(); }
else if (THEY_DIDNT_PAY == $foo) { infinite_loop(); }
else { happy_days_i_know_why_im_here(); }
Сега не е ли това по-добро?
Автор:
Тодор Илиев
Ето го официалния, а те много се различават.
http://framework.zend.com/wiki/display/ZFDEV/PHP+Coding+Standard+(draft)#PHPCodingStandard%28draft%29-Scope