Ověřování údajů v kariérista / setra nebo jinde?

hlasů
9

Zajímalo by mě, jestli je to dobrý nápad, aby se ověření v getry a seřizovačů , nebo jinde v kódu.

To by mohlo překvapit, můžete být, pokud jde o optimalizaci a urychlení up kód, myslím, že byste neměli dělat ověření v získání a nastavení, ale v kódu, kam se aktualizují soubory nebo databáze. Mýlím se?

Položena 05/08/2008 v 20:51
zdroj uživatelem
V jiných jazycích...                            


8 odpovědí

hlasů
13

No, jeden z reaons proč tříd obvykle obsahují vlastní členy s veřejnými getry / tvůrci je přesně to, protože mohou ověřit data.

Máte-li počet, než může být mezi 1 a 100, já bych určitě dát něco do seřizovač, který ověřuje, že a pak možná vyvolá výjimku, která je zachycena v kódu. Důvod je jednoduchý: Pokud to neuděláte v setra, musíte mít na paměti, že 1-100 omezení pokaždé, když jej nastavit, což vede k duplicitního kódu, nebo pokud jej zapomenete, to vede k neplatného stavu.

Pokud jde o výkon, jsem se Knuth zde:

„Měli bychom zapomenout na malé efektivnosti, řekněme o 97% času:. Předčasné optimalizace je kořenem všeho zla“

Odpovězeno 05/08/2008 v 20:59
zdroj uživatelem

hlasů
4

@Terrapin, re:

Pokud vše, co mám, je banda [jednoduché veřejné získání /] vlastnosti ... oni by mohli být stejně pole

Vlastnosti mají další výhody ve srovnání s poli. Jsou to jasnější smlouvy, jsou serializovat, mohou být laděn později, jsou to hezké místo pro rozšíření děděním. Nejšílenější syntax je náhodná složitost - .net 3,5 například překonává to.

Běžný (a špatný), praxe je začít s veřejnými poli, a přeměnit je na vlastnostech později na ‚podle potřeby‘ základ. Tím se přeruší svou smlouvu s někým, kdo spotřebovává svou třídu, takže je nejlepší začít s vlastnostmi.

Odpovězeno 08/08/2008 v 01:07
zdroj uživatelem

hlasů
3

Záleží.

Obecně platí, že kód by měl selhat rychle. Lze-li hodnota nastavena více bodů v kódu a ověřit pouze po načtení hodnoty, chyba se zdá být v kódu, který je podstatou této aktualizace. V případě, že tvůrci ověřit vstup, víte, co kód se snaží nastavit neplatné hodnoty.

Odpovězeno 05/08/2008 v 20:59
zdroj uživatelem

hlasů
3

Z hlediska má nejvíce udržovatelný kód, myslím, že byste měli udělat co nejvíce ověření, jak můžete v nahrávač nemovitosti. Tímto způsobem nebudete mezipaměti nebo jinak nakládání s neplatnými údaji.

Koneckonců, to je to, co vlastnosti jsou určeny pro. Pokud vše, co mám, je banda vlastností, jako je ...

public string Name
{
    get
    {
        return _name;
    }
    set
    {
        _name = value;
    }
}

... by mohly být stejně pole

Odpovězeno 05/08/2008 v 20:59
zdroj uživatelem

hlasů
1

Snažím se nikdy nechat své objekty zadat neplatný stav, takže tvůrci určitě bude mít potvrzení, jakož i jakýmikoli způsoby, které mění stav. Tímto způsobem, nikdy jsem mít strach, že objekt se zabývám, je neplatná. Pokud budete udržovat vaše metody jako ověřovací hranice, pak už nikdy nebudete muset starat o rámců ověřování a způsob isValid () volá sypané všude možně.

Odpovězeno 23/09/2008 v 20:44
zdroj uživatelem

hlasů
1

Líbí se mi implementovat IDataErrorInfo a dát své ověřovací logiku v jeho chybě a tato [columnName] vlastnostmi. Tak pokud chcete zkontrolovat, zda programově tu chybu, můžete jednoduše vyzkoušet některou z těchto vlastností v kódu, nebo můžete předat ověření off do datové vazby na webových formulářů, Windows Forms nebo WPF.

WPF je „ValidatesOnDataError“ Vazba vlastnost dělá to velmi snadno.

Odpovězeno 07/08/2008 v 23:24
zdroj uživatelem

hlasů
1

Možná chceš vyzkoušet Domain Driven design , Eric Evans. DDD má tento pojem normy:

... explicitní predikát-like hodnotové objekty pro speciální účely. Specifikace je predikát, který určuje, zda objekt má nebo nemá splňovat některá kritéria.

Myslím, že není-li rychle, je jedna věc, druhá je místo, kde udržet logiku pro validaci. Doména je tím pravým místem udržet logiku a myslím, že specifikace Objekt nebo metoda validate na vaší doméně objektů by bylo dobré místo.

Odpovězeno 05/08/2008 v 21:03
zdroj uživatelem

hlasů
1

Ověření musí být zachyceny odděleně od getry nebo regulátorů při způsobu ověření. Tak jestli potřebuje ověření mohly být znovu použity na více prvků, je k dispozici.

Když je tvůrcem nazývá, by měla být taková validace služba používá k dezinfekci vstup do objektu. Tímto způsobem můžete znát všechny informace uložené v objektu je platný po celou dobu.

Nepotřebujete žádný druh validace pro kariérista, protože informace o objektu je již důvěryhodný být platný.

Neukládejte ověření, dokud aktualizaci databáze !! Je lepší selhat rychle .

Odpovězeno 05/08/2008 v 20:55
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more