Klávesové zkratky na tomto webu - rozšířené Na obsah stránky

reportáže psané v HTML

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

Karma body: 23. Líbil se vám článek?

Komentáře » přidat

  1. avatar [1] David Majda: 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(strin­g) – 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í :-)

    Posláno 30. 9. 2004 v 11.38 | Odpovědět
  2. [2] rony: nový

    programatorova teorema: konstanty sa vzdy menia.

    Posláno 30. 9. 2004 ve 12.17 | Odpovědět
  3. avatar [3] Ijin: nový

    #define POCET_KURZU 3

    Posláno 30. 9. 2004 ve 13.28 | Odpovědět
  4. [4] Richard H.: 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…?!“

    Posláno 30. 9. 2004 ve 23.45 | Odpovědět
  5. [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 ;)

    Posláno 1. 10. 2004 v 9.09 | Odpovědět
  6. avatar [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.14159265358­9793 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. 

    Posláno 3. 10. 2004 ve 22.07 | Odpovědět
  7. [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.

    Posláno 4. 12. 2006 ve 21.11 | Odpovědět

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

Výtah na začátek článku na první komentář

Názory čtenářů v diskusích nejsou názory provozovatele webu, a ten za jejich obsah neodpovídá.

La Trine © 2004, 2008 David Grudl – o webu
provozuje Pachollini.

Jakékoliv užití obsahu, včetně převzetí článků nebo jejich částí, je bez předchozího písemného svolení autora zakázáno.

Ukázky zdrojových kódů smíte používat s uvedením autora a URL tohoto webu bez dalších omezení.