Odpovídáte na názor ke článku Tvoříme "vláčky" nejen v C++.
Člověk by asi měl k tomuto sáhnout pokud jde o čitelnost kódu. Například v situaci, kdy C++ ještě nemá dobře řešené volitelné množství argumentů se dá tento problém obejít například pomocí řetězení nějaké metody, která argumenty dodává. Viz můj příklad s SQL. Nebo je to krásně vidět u spouštění procesu, kde se člověk jinak nazlobí s tvorbou command line a definováním vstupů a výstupů.
@3 To je přesně ono, že tady už nejde o Fluent Interface, jedná se o konverzní řetěz. Něco podobného jsem tuhle vyrobil s MD5 třídou
MD5_t().append(login).append(heslo).append(salt).finish().asHexString().c_str()
Nicméně zkuste to napsat jinak na jednu řádku.
MD5toHex(MD5(login + heslo + salt));
Mimochodem, vláček bude rychlejší, protože tam nebude zbytečná concatace řetězců.
Někdy totiž rozpisování jednoho logického celku do více příkazů zavádí nepřehlednost, to pak je lepší sáhnout po samostatné funkci. Pokud se podaří provést zápis něčeho komplikovanější jako jeden příkaz, ušetří to práci, a nijak to nesnižuje čitelnost. Příklad s MD5_t jasně zobrazuje, že chceme vzít login,heslo,salt a udělat z toho MD5 v Hexa.
Někdy použití vláčků může generovat efektivnější kód. Například u třídy Process v implementaci ve Windows přidávání argumentů jednoduše zapisuje argumenty do nějakého interního bufferu obsahující příkazovou řádku. V Linuxové verzi se tvoří pole řetězců. Pokud bych na rozhraní zadával argumenty polem, vyrobím sice efektivnější Linuxovou verzi, ale neefektivní Windows verzi. Pokud bych argumenty zadával řetězcem, ve Windows je to super, ale musel bych pro Linux verzi implementovat parser Windowsovské příkazové řádky.
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 57 605×
Přečteno 27 722×
Přečteno 26 403×
Přečteno 24 367×
Přečteno 22 864×