Dneska se v diskusi vyrojilo mnoho dotazů, nejvíc mě zaujal problém Převod čísla na textový řetězec. Otázka zní, jak se dá číslo doplnit nulami tak, aby mělo 3 číslice. Zdejší fóra jsou při rozumném dotazu velice rychlá, když vám tady nikdo týden neodpoví, znamená to, že váš dotaz je divný, nesrozumitelný, anebo není podaný zábavně.
Velmi rychle se vyrojily 3 odpovědi. První byla na 10 řádků, číslo se převedlo na String, zjistila se délka tohoto stringu a pro každou možnou délku se doplnil příslušný počet nul.
Druhé řešení bylo mazanější - číslo se převedlo na String, před to se flákly 3 nuly, a z toho celého se vzaly poslední 3 znaky.
Třetí řešení páně Linharta samozřejmě použilo formátovací funkce v .NET frameworku, stačí totiž zavolat číslo.ToString("000") a tím se číslo zformátuje na trojciferný zápis a doplní se případnými nulami.
Tady jsou krásně vidět dva různé přístupy:
Umím programovat, tak stačí trochu přemýšlet a napíšu si to sám.
Ano, na běžné vstupy to fungovat bude, ale krajní případy už neošetříte a když to budete v aplikaci potřebovat na 100 místech, budete to tam mít stokrát. Navíc za čas zjistíte, že to jde udělat jednodušeji, a buď štábní kulturu zachováte, nebo budete mít každou půlku projektu psanou jinak.
Mám .NET Framework a nebojím se ho použít
V .NETu máme funkce skoro na všechno a zrovna formátování je velmi dobré naučit se, protože se používá velice často a ušetří mnoho práce. Pro zformátování čísel a datumů by se opravdu používat měly, jednak je ten zápis bezkonkurenčně nejkratší a druhak je elegantní a přehledný - prakticky bez přemýšlení je vidět, co kód dělá. Proč věc, která se dá napsat jednou funkcí, budeme mít na řádků 10, anebo budeme kvůli tomu vytahovat funkce ze starých verzí Visual Basicu, které by měly už raději zůstat zapomenuty?
Neříkám, že první způsob je vždy špatný, občas na to prostě funkci nemáme (v takovém případě je dobré si napsat svoji funkci a mít ji naimplementovanou jen na jednom místě). Ale často člověk vynalézá kolo, a navíc ho ještě odflákne, takže se na první výmolu musí opravit. Jenomže těch kol už je vyrobených 1000 a jsou všude po celé aplikaci, ppravovat je všechny dá spoustu práce.
Proto je dobré se naučit a vědět, co nám .NET framework nabízí. Je jasné, že trvá, než se to člověk všechno naučí, i já občas zjistím, že jsem to kolo někde znovuobjevil taky, a to dělám s .NET frameworkem prakticky od jeho první verze.
Na Matfyzu nám říkali, že programování je hlavně o teorii a algoritmech, že jazyk nebo technologii se už naučíme za týden. S tím bych si dovolil polemizovat, základy .NET frameworku se za týden pochytit dají, pokud člověk má obecné programátorské znalosti, ale aby člověk programoval pořádně a elegantně, musí mít s touto technologií alespoň půl roku zkušeností. Jinak pořád znovuobjevuje kola a není se čemu divit, .NET framework obsahuje tisíce tříd, nelze je znát všechny, natožpak za týden. Proto zkuste použít Google vždy, když si říkáte: "Sakra, tohle se mi psát nechce, to už by ten .NET mohl umět."