Programátoři nepoužívají čísla
Programátoři totiž
používají konstanty. Tedy alespoň Ti skuteční. A nejde jen
o vývojáře, myšlenka je to obecnější.
Pokud má programátor za úkol vytvořit rezervační systém pro tři
tenisové kurty, objeví se v celé aplikaci číslo 3 jen jednou. V místě
své definice POČET_KURTŮ = 3; A to i přes ubezpečení
managera, ekonoma, referátu pro rozvoj obcí a hřišť a také katastrálního
úřadu, že počet kurtů se příštích 72 let měnit nebude.
Pokud se aplikace skládá z více zdrojových souborů, stále platí
pravidlo, že číslo 3 se objeví jen jednou a tedy jen v jednom z nich.
A to i přes skutečnost, že aplikaci uploadujeme na server skrze dial-up a
kupecké počty prozrazují, že tisíckrát napsané POČET_KURTŮ
zabere o 10kB víc, než tisíckrát napsané 3.
Ale že je dnes tak pěkně, zaslouží si programátoři ústupek. Mohou v aplikacích v libovolném množství používat čísla 1 (pro sčítání a odčítání), 2 (pro násobení a dělení) a také nulu, kvůli vynulování. Ovšem tím veškerá radost končí, takže žádné rozmlsávání. Nula, jedna, dva a dost!
p.s. toto je dogma, takže žádné zdůvodňování nebo vysvětlování
nečekejte. Buď podle něj tvořte, nebo ne. Záleží jen na Vás. ![]()
Komentáře
» přidat
Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.

#1 David Majda http://www.majda.cz nový
Jen bych upřesnil typické použití literálních konstant:
0 – inicializace proměnné při zjišťování počtu něčeho, sem tam i jiná inicializace (ale tam už je většinou vhodné použít konstantu)
1 – inicializace indexu při for-cyklu, odečítání jedničky při „postupu od konce“ (např. poslední znak v řetězci: ch = string[length(string) – 1])
2 – jediné využití má podle mě při půlení intervalů, průměrech apod.
Jinak mám opravdu špatnou zkušenost s nepoužíváním konstant místo literálních hodnot: jeden „takyprogramátor“, který pro mě kdysi psal systém pro správu jakéhosi e-shopu, všude natvrdo předpokládal, že DPH bude na věky věků 22%. Letos na jaře jsem při grepování zdrojáků toho systému na řetězec „1.22“ a jeho převrácenou hodnotu opravdu zuřil.
Takže souhlasím s dogmatičností
#2 rony nový
programatorova teorema: konstanty sa vzdy menia.
#3 Ijin nový
#define POCET_KURZU 3
#4 Richard H. http://blog.holasi.net/ nový
Od určité doby taky radši všechno definuji pěkně pohromadě na jednom místě v jednom souboru a ve všech souvisejících ho jen načítám.
Sice to nebyla DPH, ale taky jsem už totiž předělával jednu věc stylem „kam jsem to jen sakra tehdy ještě mohl natvrdo zapsat to číslo…?!“
#5 Filda nový
Správně, čísla nepoužívat. Kamarádi se mi občas diví, že mam problémy s počítáním, ale ja vždycky říkám: Nemusím vědět kolik to je. Stačí když vím jak to spočítat. Stejně to jsou konstanty.
Jenže oni nejsou programátoři a nechapou to. Takže jsem za blbce dvakrát ;)
#6 thingwath nový
Připomělo mi to jedno z mých oblíbených fortune cookies. Konkrétně z manuálu pro FORTRAN od Xeroxu.
<q>The primary purpose of the DATA statement is to give names to
constants; instead of referring to pi as 3.141592653589793 at every
appearance, the variable PI can be given that value with a DATA
statement and used instead of the longer form of the constant. This
also simplifies modifying the program, should the value of pi change.
#7 RATMex B nový
Pokiaľ sa hovorí o dogme, bolo by dobré vypustiť aj číslo 2. Určite je známe, že pomocou Turingovho stroja sa dá vytvoriť ľubovoľný automat (t.j. aj dnešné počítače) a ten číslo „2“ nepoužíva.
Konkrétne, uvedený príklad, že sa číslo 2 využíva na násobenie a delenie sa dá vypustiť intepretáciou, že číslo je repreztované na páske s abecedou {0, 1}, kde je niekoľko buniek spojených do jedného celku – registru. Presne, ako to definoval už Leibniz (ďaleko pred Turingom) pri návrhu binánej sústavy a 4 základných operácii nad ňou, násobenie a delenie sa realizuje posúvaním registrov.
Pokiaľ mi je známe, všetky architektúry strojov (elektronických, nie mechanických), bez výnimky, sú postavené na logických obvodoch (zložených z dvojstavových tranzistorov) a teda používajú práve túto realizáciu.