Odpovídáte na názor ke článku Minimalistický http server v C++.
@Ondřej Novák
>> pole místo map
Takže typická předčasná optimalizace. Možná rychlejší řešení náchylná k chybám použítá místo standardních věcí. Přitom zbytek kódu není optimalizovaný vůbec (IMHO největší výkonostní propad bude spíš ve spouštění a zavírání vlákna pro každé spojení než v hledání v seřazeném poli vs. RB stromu). A i kdybys na tom trval, tak to řazení by stejně bylo lepší udělat jednou při inicialiaci a nespoléhat na programátora.
>> constexpr
constexpr má výhodu v tom, že překladač vůbec nemusí alokovat proměnnou a může jí všude inlinovat (compile time constant). U static const to obecně nepůjde.
>> šablona RAII
Problém RAII šablony je v tom, že nevhodně kombinuje procedurální C a objektový C++ přístup. Ten deskriptor socketu a souboru je typově nerozlišitelný i přestože označuje různý typ. Programátor to musí hlídat stejně jako v C. Kromě toho vytváří zbytečný stav, kdy může být nenainicializovaný. Třída socket a filedescriptor s metodami read/write, s open v constructoru a close v destructoru bude znamenat zhruba stejně kódu, ale bude jasně vidět co se tam děje a zmizí mezistav neotevřeného souboru/socketu. Navíc oproti standardním pointerům nebo scope guardům je ta šablona hodně nedotažená. Jinak to vysvětlení je zase ukázkový příklad předčasné optimalizace.
>> static
Není pravda co píšeš, anonymní namespace má od C++11 "internal linkage". Navíc podle standardu bylo tohle použití static chvíli označeno jako deprecated, ale nakonec zůstává kvůli kompatibiltě s C (např. protože nemůžeš vytvářet lokální typy). MSVC není zrovna dobrá reference standardu a ten kód je stejně psaný pro unix.
>> operátor()
Pokud by se ta funkce jmenovala podle toho co dělá, tak si toho asi nevšimnu. Takhle to zbytečně znepřehledňuje kód a není k tomu žádný důvod.
Intenzivně se zabývám programováním zejména v jazyce C++. Vyvíjím vlastní knihovny, vzory, techniky, používám šablony, to vše proto, aby se mi usnadnil život při návrhu aplikací. Pracoval jsem jako programátor ve společnosti Seznam.cz. Nyní jsem se usadil v jednom startupu, kde vyvíjím serverové komponenty a informační systémy v C++
Přečteno 51 064×
Přečteno 23 939×
Přečteno 22 871×
Přečteno 20 953×
Přečteno 17 760×