Diskuze: Líné konstruktory
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 7 zpráv z 7.
//= 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.
co je líný constructor? Myslíš Side effect?
Že se atributy objektu dopočítají, až když je potřebuješ.
aha.. lazy init / lazy loading (treba Lazy<>):-) To se používá poměrně často.. obzvláště pokud tvorba objektu trvá třeba dlouho, nebo je náročné na zdroje.. obzvlaste, kdyz to třeba většinou nepotřebuješ...
typickým příkladem je DBContext u ASP. Často nepotřebuješ přístup do DB, ale je součástí (ať už přímo, nebo nepřímo přes repozitáře) controlleru.. takže se ti vytvoří pokaždé.. přesto, že databázi potřebuješ třeba jen u 1 akce z těch 30ti co u controlleru máš.
To chápu, ale přemýšlím, jestli je rozumné to tak dělat pro každou
třídu.
BTW můžeš někdy zkusit tlačítko odpovědět, uživatelům se to pak i
zobrazí, že jsi jim odpověděl
většinou to dělám, jen bych čekal, že se to uživateli zobrazí při
jakékoliv reakci, ostatně,.. jako to dělá facebook.. Tedy jsem si to
myslel.. proto mi to odpovědět přišlo k ničemu, protože to tu stejně na
hovno hajlajtuje
Každopádně.. u většiny použití Lazy<> porušuje Law of Demeter a když to chceš nějak fixnout, tak to vede většinou k větší práci navíc..
Obecně, takovéto optimalizace nejsou úplně "first run".. když implementuješ, takovéto věci prostě neřešíš.. celkově neimplementuješ prostě tak, aby bylo vše co nejefektivnější.. spíše jedeš, aby to bylo "normálně výkonné" a pak detekuješ určité hotspoty a bottlenecky a tam opravuješ.
Je tedy zcela jistě hloupost přesypat kód lazy inicializací.. má to taky svoji režii a má smysl to řešit dodatečně. Ne prvoplánově.
Ano, zobrazí se mi to, ale to je proto, že je to moje vlákno, pokud bych
to vlákno nevlastnil, tak se o odpovědi nedozvím. Díky za reakci
Zobrazeno 7 zpráv z 7.