czwartek, 29 grudnia 2011

Clean code - rules & tools

1. WprowadzenieDokument przedstawia zasady tworzenia kodu, który obok realizowania założone funkcji, spełnia dodatkowe kryteria, takie jak czytelność, możliwość rozwijania, powtórnego wykorzystania, łatwość testowania, odporność na błędy (readability, extensability, reusablity, testabilitiy, robustness).Oczywiście temat ten nie jest w tym dokumencie zamykany. O zasadach tworzenia czystego kodu powstało wiele opracowań (najbardziej godne polecenia to (4) Fowlera). Zagadnienia, które zostaną opisane można najogólniej zawrzeć w 4 punktach: konwencje nazewnicze, komentarze i dokumentowanie kodu, przekształcenia refaktoryzacyjne i narzędzia do zautomatyzowanej...

niedziela, 25 grudnia 2011

Silverlight - koncepcja logowania z użyciem MembershipProviders oraz WCF RIA cz.1

W dzisiejszym wpisie postaram się przedstawić moją koncepcję logowania do aplikacji Silverlightowej z wykorzystaniem MembershipProviders oraz własnego AuthenticationService. Zacznijmy od stworzenia bazy danych, w której będziemy przetrzymywać informacje o użytkownikach - hasła, role itp. Bazę danych stworzymy przy użyciu narzędzia aspnet_regsql.exe, które to wygeneruje schemat bazy danych dostosowany do możliwości SqlMembershipProvider-a. aspnet_regsql.exe znajduje się w katalogu C:\WINDOWS\Microsoft.NET\Framework\wersjaFrameworka\aspnet_regsql.exe. Czyli w moim przypadku jest to C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe.Klikając...

piątek, 16 grudnia 2011

Coded UI Tests - cz. 2

Podstawy Coded UI Test zostały omówione w poprzednim poście tego bloga tutaj, jednak warto rozwinąć ten temat i trochę usystematyzować wiedzę. W tym poście zakładam, że każdy wie jak stworzyć prosty test oraz czym jest Coded UI Test Builder. Zacznijmy od tego że aby nasze testy przechodziły musimy odpalić instancję testowanej aplikacji :). Możemy oczywiście robić to za każdym razem ręcznie, jednak jest to skrajnie beznadziejne rozwiązanie. Najlepiej przygotować sobie metodę, która będzie odpalać instancję naszej aplikacji jeżeli nie jest ona uruchomiona. Ok przyjrzyjmy się strukturze plików i sposobowi budowania testów. Przede wszystkim do projektu testowego możemy dodać 2 obiekty. Pierwszy to "Coded UI Test" (CUIT) - czyli klasa opatrzona atrybutem [CodedUITest]. Jest to nasza właściwa klasa...

niedziela, 11 grudnia 2011

Konwencje nazewnicze

1. WprowadzenieTen krótki dokument wyodrębniony został z opracowania na temat jakości kodu. Opublikowany zostanie osobno ze względu na spójność zagadnienia i konieczność zebrania i wyróżnienia reguł nazewniczych dla kodu. Dokument przedstawia zasady opisane w (1), przykłady kodu oraz konfigurację narzędzi do wspomagania stosowania konwencji nazewniczych.Konwencje nazewnicze służą zachowaniu spójności i czytelności tworzonego kodu. Stosowania ich ułatwia przegląd kodu innego programisty, pozwala na szybsze określenie jego funkcji i odnalezienie potencjalnych błędów. Ustandaryzowane nazwy bardzo ułatwiają też nawigację po dużym projekcie. 2. Opis...

poniedziałek, 5 grudnia 2011

TDD cz.2

Drugą część zaczniemy od kilku słów na temat testów integracyjnych. Później powiem coś na temat wzorców testowania jednostkowego. A na koniec opiszę pare zagadnień, które z różnych powodów nie zostały opisane wcześniejI. Testy integracyjneOgólnie rzecz biorąc testowanie integracyjne wykonywane jest w celu wykrycia błędów w interfejsach i interakcjach pomiędzy modułami.Testy jednostkowe natomiast testują metody wybranej klasy, a klasy z nią współpracujące mockują. Testem jednostkowym nie jest więc test, który:Komunikuje się z bazą danychKomunikuje się po przez siećPracuje z systemem plikówNie może być uruchomiony równolegle z innymi testamiMusisz dokonać zmian w środowisku uruchomieniowym, aby zadziałałNajczęściej spotykanym obszarem wykorzystania testów integracyjnych jest dostęp do danych....

Inversion of Control/Dependency Injection & StructureMap cz.1

Inversion of Controle jest techniką programowania w której przepływ kontroli aplikacji jest odwrócony. Inversion of Controle zakłada odwrócenie zależności pomiędzy warstwami aplikacji. Aby to osiągnąć odwrócenie zależności wymaga dwóch technik: 1. Dependency Injection - wstrzykiwanie zależności 2. Service Locator - lokalizator usług.Dependency Injection jest wzorcem realizującym założenia IOC. Stosujemy go po to aby izolować klasy od konkretnych implementacji poprzez zamienianie tych implementacji na luźne powiązania. Cel ten uzyskiwany jest poprzez stosowanie klas abstrakcyjnych i interfejsów.Główne zasady DI to: - moduły wysokiego poziomu nie powinny zależeć od modułów poziomu niskiego. Obydwa powinny zależeć od abstrakcji - abstrakcja nie powinna zależeć od szczegółów. Natomiast szczegóły...

Przykłady użycia StructureMap

W pierwszym poście o StructureMap napisałem, że za pomocą StructureMap możemy sobie zdefiniować jaki obiekt ma nam zostać zwrócony dla określonego interfejsu. Ale co jeśli klasa którą chcemy zwrócić w swoim konstruktorze posiada jakiś parametr np. connectionString? Otóż za pomocą StructureMap możemy również podać parametr do konstruktora. Załóżmy, że mamy klasę ResponseService dziedziczącą po interfejsie IResponseService, która w konstruktorze posiada parametr connectionString. public interface IResponseService { string GetMessage(); } public class ResponseService : IResponseService { public string _ConnectionString {get;...

niedziela, 4 grudnia 2011

Scrum i Team Foundation Server cz.6 - Proces TDD

W kilku ostatnich wpisach przedstawiłem czym jest metodyka Scrum, po co i jak ją stosować przy użyciu Team Foundation Server. W teorii moglibyśmy już rozpocząć projekt i z powodzeniem go prowadzić. Możliwe, że więcej wiedzy nie było by Wam szybko potrzebne, ale podejrzewam, że całkiem szybko zaczęły się pojawiać pytania o zarządzanie i przepływ zadań, np.: -  Który rodzaj zadania jest  z czym powiązany? - Czy jak dodamy buga to mamy dodać do niego też taska? - do czego służy test case a do czego impediment? - itd. Itp. Takie pytania są nieuchronne, każdy Scrum Master będzie musiał je wysłuchiwać po 100 razy. Można jednak ich częstotliwość...

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Online Project management