Úloha 5 – Refaktoring aritmetiky a cyklů – zkrácené zápisy
Úvod do úlohy
Posledním krokem v procvičování práce s aritmetickými operátory bývá refaktoring kódu – tedy jeho úprava tak, aby byl kratší, přehlednější a efektivnější. Programátor totiž nemusí vždy psát složité podmínky, když stejný výsledek lze dosáhnout jediným aritmetickým výrazem. Stejně tak místo „ručního“ sčítání v cyklech můžeme využít inkrementační operátory (++, +=). Znalost precedence a správné práce s operátory nám pak pomůže vyhnout se nejednoznačným nebo chybovým zápisům – zejména u typové konverze v JavaScriptu, kde operátor + může znamenat jak sčítání čísel, tak spojování řetězců.
Schopnost zjednodušovat kód pomocí operátorů je důležitá nejen z hlediska čitelnosti, ale i výkonu a údržby programu.
Teorie a principy
-
Nahrazení podmínek aritmetikou
-
Místo
if/elsemůžeme využít aritmetiku nebo logické operátory. -
Například
if (x % 2 === 0) a = 1; else a = 0;lze nahradit výrazema = (x % 2 === 0) ? 1 : 0;nebo dokoncea = 1 - (x % 2);.
-
-
Inkrementace a dekrementace
-
Operátor
++zvyšuje hodnotu proměnné o1. -
Operátor
+= nzvyšuje hodnotu on. -
To nám šetří zápisy typu
i = i + 1;.
-
-
Jednoznačnost zápisu
-
Operátor
+je dvojího druhu: číselné sčítání a spojování řetězců. -
Pokud sčítáme proměnné neznámého typu, je vhodné použít
Number(x)neboString(x)pro jasnou konverzi. -
Př.:
alert("Součet: " + (a + b));– závorky jsou nutné, jinak by JavaScript spojoval řetězec s číslem postupně a mohl by vyjít neočekávaný výsledek.
-
Praktické příklady kódu
Původní neefektivní fragment
Refaktorovaná verze
Oprava nejednoznačného +
Typické chyby / záludnosti
-
Zbytečné podmínky – studenti často používají
if/elsei tam, kde by stačil aritmetický trik. -
Zapomenutí na inkrementaci – zápis
i = i + 1;je funkční, alei++je stručnější a srozumitelnější. -
Chybná precedence
+– bez závorek se snadno stane, že JavaScript nejdříve spojí řetězec a až pak provede sčítání. -
Implicitní konverze typů – kombinace čísel a řetězců může vést k neočekávaným výsledkům.
Shrnutí
-
Aritmetické operátory mohou nahradit složité podmínky a zjednodušit kód.
-
Inkrementační (
++,+=) a dekrementační (--,-=) operátory šetří zápis a zvyšují čitelnost. -
Operátor
+má dvojí význam – vždy hlídejte typy operandů a používejte závorky či konverze. -
Refaktoring je důležitý krok k psaní kódu, který je kratší, jasnější a méně náchylný k chybám.