Není pochyb o tom, že existuje spousta cest, jak zjistit, zda je řetězec prázdný. Kterou z nich ale zvolit a proč? To se dozvíte v dnešním příspěvku.
Původní kód
S následujícím kódem na otestování toho, zda je řetězec prázdný, se setkávám pravidelně:
std::string str; // ... if (str == "") { // ... }
či někdy dokonce
if (str.size() == 0) { // ... }
Proč takto raději ne?
První kód v podmínce výše říká: "je řetězec uložený v str
roven prázdnému řetězci?". Druhý říká: "je délka řetězce str
rovna nule?". Ani jeden z nich neříká přímo to, co chceme, ale implementuje způsoby, jak to zjistit.
Jak to udělat lépe?
Proč to řešit oklikou? Napišme přímo to, co chceme, aby se otestovalo:
if (str.empty()) { // ... }
Kód se pak čte takto: "je řetězec uložený v str
prázdný?". Toto je mnohem deklarativnější a z mého pohledu čitelnější přístup, než ty dva uvedené na začátku příspěvku.