Na navigaci | Klávesové zkratky

Translate to English… Ins Deutsche übersetzen…

Programátoři nepoužívají čísla

číslice 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

  1. David Majda http://www.majda.cz #1

    avatar

    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í :-)

    před 12 lety
  2. rony #2

    programatorova teorema: konstanty sa vzdy menia.

    před 12 lety
  3. Ijin #3

    avatar

    #define POCET_KURZU 3

    před 12 lety
  4. Richard H. http://blog.holasi.net/ #4

    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…?!“

    před 12 lety
  5. Filda #5

    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 ;)

    před 12 lety
  6. thingwath #6

    avatar

    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. 

    před 12 lety
  7. RATMex B #7

    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.

    před 10 lety

Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.