# 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)```
