Diskuze: C# - použití statické třídy

Člen

Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Pokud chceš data z DB cachovat, tak nic nevymýšlej, ale použij DataSet a odpojenou aplikaci tak, jak je to k tomu v .NETu navržené.
Co se týče toho návrhu, tak pokud ta data potřebuješ opravdu pořád a není jich moc, je to asi ok. Na devbooku podobně ukládám článek, člena a diskuzi. Pro více než pár vlastností by ses měl zamyslet nad něčím lepším, typicky se vytvoří nějaká systémová třída, která v sobě obsahuje načtené instance jako spravceFaktur, spravcePohledavek, každá instance má v sobě data, která s ní souvisejí.
Díky za názor.
Aplikace jako taková je online, jen tam je pár (asi 10) malých číselníku (typicky do 20 záznamů) které používám napříč aplikací. Cache používám z důvodu abych je nenačítal při každém použití. Na druhou stanu je nechci nechat uplně offline, protože potřebuju aby se změna číselníku v databázi projevila u uživatele dřív než při restartu aplikce. Takže mám nastavenou expiraci v cache na 5 minut a daná třída si už řeší interně, zda načte data v databázi a nebo je najde v cache.
Statika je velmi často zbytečná a vede do pekel. Značně omezuje testovatelnost aplikace, ale to si ti, kteří testy nepíší, vůbec neuvědomují.
Podle mne tu cache na číselníky děláš zbytečně, protože systém si ji dělá ve vlastní režii. Nejlepší je, pokud je cache součástí databázového engine, ale už nikde jinde. Ani v objektu.
Ono to je tak že statickou třídu mám jen jednu. Ty ostatní třídy
(například ta která načítá číselníky) statická není. Ale dávám ji
do statické property te jediné statické třídy.
Nicméně díky tomu že není statická není problém ji testovat i
izolovaně.
Problém není s testováním statické třídy, ale s testováním tříd, které jsou na statické třídě závislé. Statická třída se nedá jednoduše nahradit mockem.
Už jsem ti psal, že abys nenačítal data při každém použití, tak se používá DataSet.
Zobrazeno 9 zpráv z 9.