Moderní klíčová slova v C++: Požehnání nebo prokletí?
Od příchodu standardu C++11 jsme dostali do rukou několik elegantních a čitelnějších klíčových slov pro logické a bitové operace, jako jsou and, or, bitand a další. Tyto nové alternativy ke klasickým symbolům jako &&, || nebo & přinesly do jazyka svěží vítr. Místo tradičního zápisu:
if (x && y || z) {
// ...
}
můžeme nyní psát:
if (x and y or z) {
// ...
}
Výsledek? Kód je čistší, čitelnější a připomíná moderní programovací jazyky. V mnoha projektech, kde se tato klíčová slova používala, se čitelnost výrazně zlepšila. Na první pohled tedy skvělý krok vpřed.
Ale teď přichází háček…
S těmito klíčovými slovy se však do jazyka dostala i jedna z nejbizarnějších možností zápisu, která může způsobit chaos. Věděli jste, že následující kód je zcela validní C++?
void f(int and x) {
// ...
}
void g(int bitand x) {
// ...
}
Ano, and je jen jiný zápis pro && a bitand pro &, ale někdo se rozhodl, že by bylo „dobrý nápad“ povolit jejich použití i v deklaracích proměnných. Výsledek? Kód, který je noční můrou pro čitelnost a údržbu.
Co s tím?
Tato syntaxe je sice součástí standardu, ale její existence vyvolává otázky: Proč? Kdo to chtěl? A můžeme to prosím odstranit? Pro většinu vývojářů je to zbytečná komplikace, která spíše škodí, než pomáhá.
Co si o tom myslíte vy? Měli bychom tuto možnost v budoucích standardech odstranit, nebo je to jen drobná kuriozita, se kterou se dá žít? Diskutujme!