NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 4 - Upomínač narozenin - Logická vrstva

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Michal Žůrek - misaz:30.10.2013 10:57

nahoře ti nefunguje odkaz na předchozí článek.

 
Odpovědět
30.10.2013 10:57
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Michal Žůrek - misaz
David Hartinger:30.10.2013 11:00

Díky, na ty jsem zapomněl :)

Odpovědět
30.10.2013 11:00
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Kit:30.10.2013 11:45

Myslím si, že by si třída Osoba měla ohlídat platná vstupní data. Asi takto:

public class Osoba {

    private string jmeno;
    private DateTime narozeniny;

    public string Jmeno {
        get {
            return jmeno;
        }
        set {
            if (value.Length < 3)
                throw new ArgumentException("Jméno je příliš krátké");
            jmeno = value;
        }
    }

    public DateTime Narozeniny {
        get {
            return narozeniny;
        }
        set {
            if (value.Date > DateTime.Today)
                throw new ArgumentException("Datum narození nesmí být v budoucnosti");
            narozeniny = value;
        }
    }

    public Osoba(string jmeno, DateTime narozeniny) {
        Jmeno = jmeno;
        Narozeniny = narozeniny;
    }
}
Odpovědět
30.10.2013 11:45
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:30.10.2013 11:53

Přijde mi logičtější, když to dělá ten správce. Potom by v něm byla i metoda pro editaci. Ale to je věc názoru.

Odpovědět
30.10.2013 11:53
New kid back on the block with a R.I.P
Avatar
Jan Vargovský
Tvůrce
Avatar
Jan Vargovský:30.10.2013 12:00

Budeš to nějak dál rozvíjet ? Přijde mi zbytečně používat binding list, když nevyužíváš jeho hlavní vlastnost => zahrnuje v sobě události, když něco přidáš, odebereš atd.

 
Odpovědět
30.10.2013 12:00
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Jan Vargovský
David Hartinger:30.10.2013 12:03

Samozřejmě, že ho používám, je to dále vysvětlené.

Editováno 30.10.2013 12:03
Odpovědět
30.10.2013 12:03
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:30.10.2013 12:03

Když si to třída ohlídá sama, správce je zbytečný. Proč psát 5 správců pro 5 uživatelů třídy, když si vstupní data mohu ošetřit v jednom setteru? Je to ostatně jeho hlavní poslání.

Odpovědět
30.10.2013 12:03
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na David Hartinger
Jan Vargovský:30.10.2013 12:04

Tak to sorry, že spamuju. Jen mě to hned zaujalo, když jsem koukal na zdrojáky :)

 
Odpovědět
30.10.2013 12:04
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:30.10.2013 18:02

Není zbytečný, někam kolekci musíš dát a metody pro vyhledávání také. Učit dávat validace do setterů se mi nelíbí, protože potom trpí rychlost aplikace. Když už tak do konstruktoru, ale zde musí být vlastnosti public z obou stran, aby fungoval serializer. Mám to rozmyšlené a vše tu má svůj smysl.

Odpovědět
30.10.2013 18:02
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:30.10.2013 18:14

Validace přece nepatří do kolekce, ale do její položky. Co když máš v té kolekci položky různých typů? Budeš do té kolekce dávat validaci každého typu? To je přece nesmysl a bylo by to děsně nepřehledné.

Validace v setterech nezdržuje víc, než validace ve správci. Toho správce totiž můžeš velmi snadno obejít, ale setter nemáš jak. Nádherné zapouzdření.

V tom případě gettery a settery vůbec nepotřebuješ. Jenom ti v kódu zaclánějí. Stačí, když ty atributy dáš public a máš to úplně to samé, jako když tam dáš get; set;

Odpovědět
30.10.2013 18:14
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 50.