W ostatnim projekcie musiałem przekonwertować bajty na kilobajty kibibajta . Kod był dość prosty:
var kBval = byteVal / 1024;
Po napisaniu tego resztę funkcji działałem i przeszedłem.
Ale później zacząłem się zastanawiać, czy właśnie umieściłem magiczną liczbę w moim kodzie. Część mnie mówi, że było dobrze, ponieważ liczba jest stałą i powinna być łatwo zrozumiana. Ale inna część mnie uważa, że byłoby bardzo jasne, gdyby było owinięte określoną stałą BYTES_PER_KBYTE
.
Czy więc liczby, które są dobrze znanymi stałymi, są naprawdę tak magiczne, czy nie?
Powiązane pytania:
Kiedy liczba jest magiczną liczbą? i Czy każda liczba w kodzie jest uważana za „magiczną liczbę”? - są podobne, ale mają znacznie szersze pytania niż te, które zadaję. Moje pytanie koncentruje się na dobrze znanych stałych liczbach, które nie zostały uwzględnione w tych pytaniach.
Eliminowanie magicznych liczb: kiedy należy powiedzieć „nie”? jest również powiązany, ale koncentruje się na refaktoryzacji, w przeciwieństwie do tego, czy liczba stała jest liczbą magiczną, czy nie.
1024
, bo w przeciwnym razie zespół deweloperów spędza cały swój czas na kłótniach o to, czy są to „kilobajty” czy „kibibajty”.
#define
KIBI
jako 1024, MEBI
jako 1024 * 1024…
ZERO=0, ONE=1, TWO=2
a kiedy programy zostaną przeniesione do innych języków (lub programiści nie zmienią zachowania podczas zmiany języka), zobaczysz to również tam i musisz się modlić, aby nikt nigdy nie zmienił na ONE=2
...
FOUR_HUNDRED_FOUR = 404
. Pracowałem nad innym projektem, w którym bojownikami używali stałych ciągów zamiast literałów, więc mieli dziesiątki wierszy w kodzie, które wyglądały jak:DATABASE = "database"