29 lines
1.5 KiB
Markdown
29 lines
1.5 KiB
Markdown
|
# Konstanty a magická čísla
|
||
|
|
||
|
- Doposud jsme běžně používaly číselné nebo znakové (textové) konstanty přímo ve zdrojovém kódu
|
||
|
- Tzv. literály
|
||
|
- Ve většině případů se taková použití označují jako „magická čísla“ a jsou nevhodná
|
||
|
|
||
|
### Magická čísla
|
||
|
|
||
|
- Magická se nezývají proto, že není jasné, odkud se vzaly
|
||
|
- „Najednou je v programu číslo 2.58. Proč?“
|
||
|
- Nemusí se jednat o čísla, může se jednat i o znakové a textové, případně jiné nepojmenované konstanty
|
||
|
- Velmi znesnadňují úpravu kódu
|
||
|
- I u relativně jednoduchých programů
|
||
|
- Pokud budu program chtít upravit, budu muset magické číslo přepsat na víceromístech
|
||
|
|
||
|
### Pojmenované konstanty místo magických čísel
|
||
|
|
||
|
- Snahou by mělo být důsledně se zbavit magických čísel pomocí pojmenovaných (též symbolických) konstant
|
||
|
- Konstanty mohou být lokální (deklarované uvnitř metody), ale naprostá většina je deklarována jako konstanta třídy (tj. uvnitř třídy, ale mimo metody)
|
||
|
- Konstanta je odlišena od proměnné klíčovým slovem ```final```
|
||
|
- **Názvy konstant** jsou psány **velkými písmeny**, **oddělovač** slov ve víceslovných názvech je **podtržítko**
|
||
|
|
||
|
### Povolené nepojmenované konstanty
|
||
|
|
||
|
- Stejně jako u každého pravidla i u magických čísel existují výjimky, v tomto případě číselné
|
||
|
- Je odůvodnitelné použít malá celá čísla (např. -1, 0, 1, 2), pokud však nemají speciální význam
|
||
|
- Např. test sudosti/lichosti čísel
|
||
|
- ```if (cislo % 2 == 0)```
|