Diskuze: System.Dynamic.ExpandoObject() náročnost
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Si udělej benchmark ...
Btw, jestli to je známý JSON, tak je to jen totální lenost dát copy paste a vytvořit z toho classu a normálně typový objekt.
Jako víceméně ano, spíš se nejedná o lenost, spíš o vyvarování se mít mnoho a mnoho tříd a tím třeba i ztratit i přehlednost, proto když právě do JSON potřebuju vrátit objekt, jehož struktura už se nikde jinde nepoužívá se mně zdá zbytečné právě vytvářet třídu .....
zato mít v kódu randomObject.RandomProperty1.RandomProperty11 je
přehlednější
až to nebude projekt, resp. část kódu na kterou často koukáš a přijdeš
k ní po pár měsících/letech, tak se budeš bít do hlavy co to znamená
Naprostý souhlas, nedělejte z rozumného jazyka dynamický odpad jen proto, že má pro to podporu (dynamic, DLR, ExpandoObject a podobný sra*ky) vznikly především kvůli podpoře dalších nových jazyků pro .NET (například python) a né proto, aby se zneužívaly.
Někde je použití vhodné a je to prima (přenos modelu do template třeba v MVCčku), ale rozhodně by se to nemělo zneužívat. Dynamika je ZLO.
Pokud můžeš - šáhni raději po anonymním objektu, tuple,..
Dynamic je o hodně (hodně) pomalejší než static typing, na druhou stranu, je mnohem (mnohem) rychlejší, než třeba reflexe (pokud to není nahackovaná reflexe pomocí úpravy IL kodu.), jelikož je použití dynamicu obaleno zvláštním runtimem (DLR) a ten to umí pak obzvláště při dalším runu slušně obalit...
Co to znamená?
Zobrazeno 5 zpráv z 5.