Kategooria ‘.NET’ artiklid
Selle aasta lõpuks peaks välja tulema ReSharper 5 Visual Studio 2008 ja 2010-le. Siiski, kes soovib seda varem juba katsetada, siis on võimalik seda läbi Early Access Programi teha.
Selle versiooni suuremad edasiminekud on veebi arendamise osas. Nüüd on võimalik MVC ja tavalise ASP.NET-i peal genereerida vajaminevat koodi ja kiirelt parandada vigasid. Lisaks on seal osas ka navigeerimist paremaks tehtud. Veebiarendus hakkab ka nüüd R#5 jaoks olema esmaklassiline kodanik.
Märkimisväärne uuendus on ka koodi analüüsis – võimalik on otsida koodi struktuurilisi/mustrilisi vigasid ehk halbu lõhnu. See on suurepärane töövahend meeskonna koodi ühtlustamise osas ning uute koolitamisel.
Kui Visual Studio 2010 oskab kenasid UML diagramme luua, siis R#5 seevastu näitab lihtsamalt, kuidas väärtused või meetodi väljakutsed aset leiavad. See kiirendab oluliselt koodist arusaamist (juhul kui pole üks suur kauss spagette).
Väiksemate väärtuste hulka võiksid kuuluda koodiviited (bookmark) ja ka NUniti integratsioon. Rohkemat infot leiate R# uuenduste nimekirjast.
Kellel suurem huvi koodi kirjutamise produktiivsuse tõstmise katsetamiseks on, võiksid heita ka pilgu peale Telerik JustCodeile, kuigi sellel on vähem võimalusi. Oleks tore ka kuulda, mis teile uues R# meele järgi on ja mis puudujääke on.
Tarkvara arendamine on pidev tegevus; pidevalt ilmuvad uuendused ja vigade parandused. Kõik see on meeldiv, kuid uuendamine alati pole, eriti kui peab vana maha võtma ja uue paigaldama. Kerkivad mõned küsimused: kas seadistused jäävad alles? kas kõik seaded on varundatud? Palju meeldivam on see, kui rakendus imeväel ennast uuendab ja ise midagi tegema ei pea. Nii toimivad paljud töölaua rakendused praegu, kuid samalaadselt võiksid ka meie klient-server rakendused uueneda.
Peamiselt on meil vaja uus kood kokku kompileerida, lisada talle uus versiooni number, andmebaasi skeem uuendada ja andmete kohandada. Väga palju polegi. Automatiseerimiseks sobivad lihtsad skriptid: kõige algupärasem variant oleks teha konsooli skript, kuid selleks peame väga hästi tundma iga kasutatava rakenduse parameetrite süntaksit.
Pea iga rakendus vajab andmete salvestamist, eriti nö andmepõhised rakendused. Seetõttu tuleb meil siduda rakendused andmebaasiga ning võimalusi selleks on mitmeid.
Küllaltki tüüpiline on alguses kasutada andmebaasi lähedast mudelit. Ehitada ise andmete vahetuskiht ja teha DataAccess objekte. Sellise lähenemisega kaasneb hulgaliselt andmekihi kirjutamist, tihti on see lausa 80% projekti mahust ning pärast kolmandat korda tundub, et pidevalt on loodud sama koodi. Oren Eini (Ayende Rahien) ühes ettekandeski ütles, et see on lahendatud probleem ning sellele vastu vaielda väga mõistlik pole.
KATEGOORIAD » .NET,Analüüs/Arhitektuur
SILDID » .NET, Analüüs/Arhitektuur, Java, NHibernate, PHP, Ruby
LOE EDASI »Üks populaarsemaid kasutajaliides loomise mustreid veebirakenduste juures on Model-View-Controller ehk lühidalt MVC. Seda kohtame nii PHP, .NET, Ruby ja Java maailmas, kuid mõnes neist võib lähenemisnurk olla veidi erinev.
Liigume edasi nüüd mustri lahkamise juurde:
- Model – Selle all mõeldakse tihtipeale ärimudelit, mis pole kõige valem, kuid parem oleks mõelda vaatemudelit. Põhjus on selleks lihtne – vaates võivad olla spetsiifilised väärtused kuvamise jaoks olla (n: mõne elemendi CSS klass) ning need ei peaks olema ärimudeli küljes. Lisaks võiks see sarnaneda võimalikult Data Transfer Objectile, mille teisendab Controller ärimudelist. Sel puhul ei peaks muretsema selle üle, et kui mingit meetodit või atribuuti kutsuda ei hakata andmebaasi vms kallale minema.
- View – Peamiselt HTML vaade kus seotakse andmed malliga. Teisisõnu lõpptulemus, mida kasutaja näeb.
- Controller – Küsib andmehoidlast vastava ärimudeli, käivitab vastavad äriprotsessid ja teisendab tulemuse vaatemudeliks ning kuvab vaate.
KATEGOORIAD » .NET,Analüüs/Arhitektuur
SILDID » .NET, Analüüs/Arhitektuur, Joomla!, MVC, PHP
LOE EDASI »Uue välimuse arendamine on tegusalt läinud ning sain ka soojasid kommentaare ja head kriitikat CruiseControl.NET arendajatelt. Kuna see nägi nende jaoks piisavalt ahvatlev välja, siis peaks see välimus olema ka 1.5 väljalaskes sees ning võib-olla ka vaikimisi valitud. Mul on äärmiselt hea meel, et saan kasulik olla ja teha ühte head toodet veel paremaks.
Kuna 1.5 ei tule kohe välja (praeguste andmete järgi oktoobris), siis jagan teiega vahepealseid tulemusi, et saaksite tagasisidet anda, kuidas muuta kvaliteedi kontrollimine tõhusamaks.
Täna on mul hea uudis CruiseControl.NET kasutajatele. Kunagi alustasin selle veebiliidese ümberdisainimist ja nüüd võtsin selle uuesti käsile ning see on nii palju valmis, et võiksite katsetada.
Mõni aeg tagasi sai vesteldud kirja teel Patrick Smacchiaga NDependist. Seda rakendust olen varemgi uurinud, kuid prooviversioonis CQL-i päringuid kasutada ei ole võimalik, mis tundub olevat üheks väga heaks abimeheks. Võrreldes Microsoft FxCopi või Gendramega, siis sealne viis reegleid lisada on tunduvalt parem.
Tundub, et see rakendus võiks olla olemas ettevõtetes, kus ehitatakse .NET platvormil ja hinnatakse koodi kvaliteeti. Nüüd aga väikese vestluse juurde.
Eelmisest veidi parem valideerimise variant tundub olevat kapseldada reeglid ühte eraldiseisvasse klassi. See on hästi kooskõlas ka Single Responibility Principlega.
public class PersonValidator : AbstractValidator<Person>
{
public PersonValidator()
{
RuleFor(x => x.FirstName).NotNull().And.Length(1, 25);
RuleFor(x => x.LastName).NotNull().And.Length(1, 25);
RuleFor(x => x.PersonalCode).NotNull().And.Matches("[0-9]{11}");
RuleFor(x => x.DateOfBirth).NotNull().And.LessThan(DateTime.Today);
RuleFor(x => x.Age).NotNull().And.GreaterThan(1).And.LessThan(120);
}
}
KATEGOORIAD » .NET,Analüüs/Arhitektuur
SILDID » .NET, Analüüs/Arhitektuur, C#, valideerimine
LOE EDASI »Atribuutide kasutamine valideerimiseks tundub paljude jaoks hea mõte olevat. Seda väidet kinnitab selliste raamistikkude rohkesus. Ei saa vastu vaielda, et see on üks lihtsamaid viise, kuid tasuks ka vaadata alternatiive enne kasutamist, sest seegi pole ilma tumeda pooleta.
public class Person
{
public int Id { get; private set; }
[Required, Length(Max = 25)]
public string FirstName { get; set; }
[Required, Length(Max = 25)]
public string LastName { get; set; }
[Required, Pattern("[0-9]{11}")]
public string PersonalCode { get; set; }
[Required, PastDate]
public DateTime DateOfBirth { get; set; }
[Required, Between(Min = 1, Max = 120)]
public int Age { get; set; }
}
KATEGOORIAD » .NET,Analüüs/Arhitektuur
SILDID » .NET, Analüüs/Arhitektuur, C#, FluentNHibernate, NHibernate, valideerimine
LOE EDASI »Sai külastatud ka siis nippide ja trikkide üritust. Vasikavaimustust peale ei tulnud, kuid arvan, et nii mõnigi inimene sai targemaks. Kes ise pole tahtnud uurida, kuidas Visual Studios elu kiiremaks ja mõnusamaks teha, neile oli see nagu rusikas silmaauku.
Esimene probleem, mida võib presentatsioonidel näha on see, et ei julgeta/viitsita Visual Studiot ümber kujundada (visuaalselt), samas ei kasutata neid nuppe ka väga. Produktiivsuse esimene reegel on fokuseerimine ühele tegevusele/asjale. Senikaua kuni sodi (aknad ja nupud) on ees, seni ei saa häirimatult fookust suunata näiteks koodi kirjutamisele ja ka väga väikese pinna peal on halb tööd teha. Kes arvab, et Solution View või Properties vaadet on vaja koodi kirjutamisel kogu aeg lahti hoida, see eksib ilmselgelt (või palun seletage mulle kuidas on hea koodi kirjutada ja passida näiteks Solution View‘d Text Editori asemel).
Loe edasi »
SILDID » CodeRush, produktiivsus, ReSharper, üritus, Visual Studio
LOE EDASI »KAIZEN FEED
Telli endale Kaizeni uudisvoog
KOMMENTAARIDE FEED
Telli endale kommentaaride voog
KAIZEN TWITTER
Lühiuudised Kaizeni autoritelt
KAIZEN FACEBOOK
Liitu Kaizeniga
MIS ON KAIZEN?
Kaizen on Saiku tarkvaraarendusealane blogi, kus kirjutame erinevatest lähenemistest meisterlikule tarkvaraarendusele.
KATEGOORIAD
- .NET (18)
- Analüüs/Arhitektuur (11)
- Arendus (66)
- Ettevalmistus (1)
- Juhtimine (2)
- Varia (23)
SILDIPILV
- .NET (41)
- ilus kood (23)
- Arendus (23)
- C# (20)
- Analüüs/Arhitektuur (14)
- Testimine (10)
- raamat (8)
- Ruby (8)
- projektijuhtimine (8)
- printsiibid (6)
- produktiivsus (5)
- ReSharper (5)
- PHP (5)
- NHibernate (4)
- objekt-orienteeritud (4)
- pidev integratsioon (4)
- Viited (4)
- agile (4)
- Java (4)
- Geekdinner (4)
- lean (4)
- raamatukogu (4)
- CI (3)
- Cruise Control.NET (3)
- Robert C. Martin (3)
- scrum (3)
- iteratsioon (3)
- suhtlus (3)
- jQuery (2)
- TechEd 2008 (2)
- Visual Studio (2)
- valideerimine (2)
- intervjuu (2)
- analüüs (1)
- ASP.NET (1)
- ümberstruktureerimine (1)
- üritus (1)
- CodeRush (1)
- dokumentatsioon (1)
- Kent Beck (1)
- LINQ (1)
- Martin Fowler (1)
- Moq (1)
- Rhino Mocks (1)
- stackoverflow (1)
- võltsitud objektid (1)
- Whiteboard Wednesday (1)
- hindamine (1)
- tarkvara kvaliteet (1)
- ajagraafikud (1)
- Saiku (1)
- koolitus (1)
- tagasivaate (1)
- koosolek (1)
- dünaamilised keeled (1)
- staatilised keeled (1)
- FluentNHibernate (1)
- facebook (1)
- aastapäev (1)
- Rake (1)
- Oredev 2008 (1)
- toyota way (1)
- raiskamine (1)
- NDepend (1)
- podcasts (1)
- väle tarkvaraarendus (1)
- raido tonts (1)
- minimal marketable feature (1)
- kasutajalugu (1)
- twitter (1)
- Joomla! (1)
- MVC (1)
- andmebaas (1)
- versioonimine (1)
- diskussioon (1)
- regulaaravaldised (1)
- motiveerimine (1)
- mõõdikud (1)
- agileestonia (1)
- riistvara (1)
- koolitused (1)
- kujundus (1)
- kodulehed (1)
- veeb (1)
