Souhlas, je evidentní, že autor v C++ moc kovaný není.
Namátkou
* funkce deklaruje statické i když jsou v anonymním namespace.
* v C++11 existuje constexpr (autor používá na stringové a číselné konstanty static const )
* obluda std::pair<std::string_view, std::string_view>[] místo std::map a ještě píše v komentáři, že si to má programátor při úpravě řadit podle abecedy :-D
* podivná šablona RAII (pro Socket a FileDesc je lepší vytvořit třídu, když už k nim má stejně nějaké funkce, zbytek stačí std::unique_ptr)
* použití operátoru () v SplitString
atd.
Mně tohle přijde legrační. Ondra pro mě vždycky byl autorita na poli hardcore C++. Jeho programátorský styl se mi nikdy nelíbil, protože sám mám rád mnohem jednodušší způsob programování (ano, v některých věcech jsem tak trochu céčkař, i když i já uznávám, že je dobré dát kód do tříd, pokud možno nealokovat pomět malloc/free atd..)
No a teď se dozvím, že tenhle hardcore C++ programátor není v C++ kovaný :-)
takhle sem to mastil nekdy na stredni skole. Komentare sem psal taky cesky, zejmena aby kod vypadal vedecky a aby ho kazdej tzv. pochopil. U "int a=1;" jsem taky psal "inicializace promenne". Mapy, stringy, listy sem si taky musel napsat lip nez jsou ty v stdlib/boostu. "setridenej list" sem taky nekdy asi pouzil a zoptimalizoval tak start programu o 1ms.
Je to vsechno v poradku... Kdyz je vam 15 :-D
Zdravím, děkuji za reakci, následně odpovím na následující námitky
> * funkce deklaruje statické i když jsou v anonymním namespace.
Primárně byly pouze statické, protože je velký rozdíl mezi funkcí v anonymním namespace a funkce statické
1. statické funkce se neexportují
2. funkce v anonymním namespace se exportují ale pod náhodným namespace
(aspoň takto to dělá msvc, nevím jaký je aktuální stav)
Obecně používám pomocné funkce deklarované jako statick. Jednou z výhod také je, že překladač většinou warningem označí funkce, které už nepoužívám.
anonymní namespace byl vložen proto, že některá verze GCC si stěžovala, že deklarace třídy je v cpp souboru (jako warning). Jinak bych to neřešil
> * v C++11 existuje constexpr (autor používá na stringové a číselné konstanty static const )
asi hodně podobné jako u toho static funkce. Před C++11 se to tak běžně psalo. Moc jsem to nesledoval a nevidím v tom velký rozdíl
> * obluda std::pair<std::string_view, std::string_view>[] místo std::map a ještě píše v komentáři, že si to má programátor při úpravě řadit podle abecedy :-D
Ta obluda je rychlejší než std::map, a zabírá méně místa. Běžně používám u staticky alokovaných asociativních polí (slovníků)
> * podivná šablona RAII (pro Socket a FileDesc je lepší vytvořit třídu, když už k nim má stejně nějaké funkce, zbytek stačí std::unique_ptr
Vaše řešení opět znamená, že místo toho, aby deskriptor dál byl uložen v intu, tak ho máte alokovaný v paměti a ještě potřebujete pointer. Nepřijde mi to, že bych si pomocí C++ pomohl. Proč mám pro něco co v C zabírá 8 bajtů alokovat dalších desítek bajtů jen proto, že si neumím napsat jazykovými prostředky třídu, která to zvládne bez toho? A proč je to špatně tak jak to mám já?
> * použití operátoru () v SplitString
Protože SplitString je funktor, který vrací další řetězec v pořadí. Je to efektivnější, než se zaobírat iterátory
Obecně iterační fuktor používám
auto x = a.create_iterator()
while (!!x) {
do_something(x())
}
nezvyklé? Ale dobře se s tím pracuje.
To so statickou funkciou v anonymnom namespace je naprosto spravne. Nechova sa tak len MSVC. Ale da sa to ovplyvnit aj inymi sposobmi, aj ked nie do takej miery a tak pohodlne ako klucovym slovom static.
Podla toho co som vyzistil dokonca bolo v plane v novsich standardoch KW static uplne vypustit, ale zislo z toho, pretoze anonymny namespace ho plnohodnotne nenahradza.
Jedina vec, co tam mne kole oci je using na aliasovanie typu. Co je zle na typedefe?
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 063×
Přečteno 23 939×
Přečteno 22 871×
Přečteno 20 952×
Přečteno 17 760×