Pereiti prie turinio

C# List<T> bei jusu nuomone del architekturos


Rekomenduojami pranešimai

Sveiki visi, jau kuri laika zaidziu su C# pakolkas lyg viskas sekasi netgi sakyciau lb gerai, tik va neturiu neivieno pazistamo programuotojo todel kartais uzstringu ties atrodytu elementariausiais sprendimais. Na o dabar prie reikalo. Susigalvojau sau uzduoti kuri priskiria darba darbuotojui (uzduotis ilgesne ce tik lb maza dalis). Pasirinkau architektura ("3 Layer architecture") ir pradejau viska nuo "Domain layer". Parasiau keleta "Unit" Testu (praktikuojuos TDD). http://postimg.org/image/u7x8xoqgt/ .Man idomi jusu nuomone, ar teisingu keliu ainu viska taip sugrupuodamas (ziureti ties nr. 2). Ar reiketu ka keisti jei tai butu enterpraise dydzio programa? Sekantis klausimas, kai sukuriau "Position" klase http://pastebin.com/aJN8Lryg ir 14 eilutei parasiau "public List<Employe> EmployesPosition { get; set; }" , kodel negalejau iskarto savo Unit teste rasyti sitaip "position.AddEmployes(employe1)" http://pastebin.com/NHhHqE7E tol kol neirasiau kodo kuris yra apibrauktas paveikslelije nr. 1. Ar ce kazkoks keistas konstruktorius kokio man dar nera teke matyti, gal kas zinot galit parasyti delko irasius ji man viskas pradejo veikti? Nes iki tol testuodamas gaudavau toki errora http://postimg.org/image/yaikhy0df/ Galite pateikti savo pavyzdziu butu idomu panagrineti.

P.S. Iskarto atsiprasau uz rasyba, as savamokslis ir man nera zinomi visi terminai lietuviu klaba nes visa info pas mane angliskai :) Iskarto dekoju padejusiems.

Redagavo highontrance
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na, viskas normaliai, kadangi EmployesPosition list'as yra neinicializuotas (jo reiksme yra null) tai kai bandai naudoti Add() metoda gauni NullReferenceException. Visalaik reikia inicializuot, ka ir padarai sioje vietoje:

EmployesPosition = new List<Employe>();

Redagavo Dumpling
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Patarčiau Employe klasėje turėt konstruktorių

public class Employe {
   public string Name { get; private set; }
   public string Surname { get; private set; }
   public DateTime WorksSince { get; private set; }

   private void Employe()
   {
   }

   public void Employe(string name, string surname, DataTime worksSince)
   {
      // užtikriname kad būtų vardas ir pavardė
      if (string.IsNullOrEmpty(name))
          throw new ArgumentException();
      if (string.IsNullOrEmpty(surname))
          throw new ArgumentException();

      Name = name;
      Surname = surname;
      WorksSince = worksSince;
   }
}

ir visų trijų savybių set'erius padaryti "private", enterprise lygio aplikacijose butent taip užtikrinama kad nepakeistų netyčia pvz. vardo. Dar reikėtų pridėti "private" kostruktorių be parametrų, tas užtikrintų, kad nebus sukurtas darbuotojas be vardo ;)

 

Dar dėl šių savybių pavadinimų jeigu klasė vadinasi Employe, tai nėra tikslinga savybę vadinti EmployeName, tiesiog Name.

 

Kas liečia sąrašo inicializavimą Position kontroleryje, tai būtent taip ir daryčiau.

 

Man liko neaiški "AddEmployes" Position klasės logika...

 

Dar dėl pačios sintaksės

var employe2 = new Employe();
employe2.EmployeName = "Name";
employe2.EmployeSurname = "Surname";
employe2.EmployeSince = DateTime.Now.AddDays(-1);

man labiau patinka toks užrašymas:

var employe2 = new Employe() {
   EmployeName = "Name",
   EmployeSurname = "Surname",
   EmployeSince = DateTime.Now.AddDays(-1)
};

 

Tikiuosi mano patarimai tau padės :)

Redagavo saniokazzz777
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...