W trakcie wspólnych badań nad Enterprise Library, w gronie kilku osób z Redakcji Zina przygotowaliśmy trochę materiału, który można wykorzystać jako podstawę do małego konkursu poświęconego właśnie temu projektowi. Zdecydowaliśmy się zatem zorganizować konkursik z drobnymi nagrodami, sponsorowanymi przez przyjaciela serwisu. Ale o tym nieco dalej.
Enterprise Library jest zestawem bibliotek pozwalających wprowadzać do naszego kodu ‘dobre praktyki’ oparte o sprawdzone wzorce projektowe i rozwiązania architektoniczne, zaproponowane przez zespół P&P Microsoftu. Architekci i programiści wiedzą, że przejście z dowolnego kodu do takiego, który sensownie wprowadza pewne wzorce projektowe nie jest proste i nie istnieje tutaj żaden algorytm realizowalny programowo. Nie jest jednak aż tak źle – zwolennicy metodologii określanych mianem agile ‘zwinnych’ są zaznajomieni z pojęciem ‘refaktoryzacja’, wprowadzonym do informatyki przez Martina Fowlera. Dzięki małym (oraz większym) refaktoryzacjom można bardzo często poprawić jakość i czytelność kodu, sprawiając, że dalsze utrzymanie kodu jest prostsze i przyjemniejsze.
Refaktoryzacja doczekała się wielu publikacji – żeby wymienić tylko kilka (przetłumaczonych na język polski):
- „Refaktoryzacja. Ulepszanie struktury istniejącego kodu”, opierająca się w dużej mierze na wzorcach GoF:
„Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku”
- „Refaktoryzacja do wzorców projektowych”, sięgająca często do „Architektura systemów zarządzania przedsiębiorstwem. Wzorce projektowe”
Refaktoryzacja ma również swój serwis internetowy, prowadzony przez Martina Fowlera. Doczekała się również silnego wsparcia software’owe – zarówno w samym Visual Studio, jak i w narzędziach firm trzecich (Resharper, CodeIt.Once, etc.).
Teksty przygotowane przez nas traktują o sposobach wprowadzenia bloków Enterprise Library do naszego kodu. Często są to notatki, wskazówki, nie mają charakteru ścisłego i sformalizowanego. Wydaje mi się jednak, że są wystarczającym źródłem informacji, pozwalającym na ujarzmienie Enterprise Library i mogą stanowić zachętę do jego wykorzystania. Staraliśmy się trzymać jak najbliżej podejścia zaproponowanego przez Fowlera we wspomnianej wcześniej książce o refaktoryzacji.
Reguły
Do rzeczy :) Nie jestem formalistą, przyjęliśmy jednak kilka reguł, które warto znać:
- W przyszłym tygodniu (co najmniej tydzień po tej publikacji) pojawi się pierwszy tekst opisujący kroki refaktoryzacyjne pierwszego z wybranych przez nas bloków z Enterprise Library 3.1.
- Po każdym z tekstów refaktoryzacyjnych pojawi się pytanie konkursowe, na rozwiązanie którego będzie tydzień. Staraliśmy się, żeby wykonanie każdego z zadań po przeczytaniu tekstu zawierającego kroki refaktoryzacyjne, zajęło maksymalnie 2-3 godziny ‘sezonowemu programiście’, więc tydzień jest w naszym odczuciu wystarczający na znalezienie wolnego czasu i przeprowadzenie samodzielnej refaktoryzacji na dostarczonym przez nas kodzie.
- Kolejne teksty będą pojawiały się w odstępach co najmniej tygodniowych, na blogach różnych autorów, oczywiście w ramach serwisu zine.net.pl.
- Zadanie konkursowe będzie dotyczyło aplikacji, do źródeł której link pojawi się przy każdym pytaniu konkursowym.
- Odpowiedzi konkursowe – kompilowalny kod wynikowy po refaktoryzacji + opis wykonywanych czynności należy nadsyłać na maila: mgrzeg At gmail kropa com. Niech to będzie zip zawierający katalogi Code z kodem i Doc z opisem w formacie .txt, .rtf, lub .doc. Można również dołączyć katalog Bin zawierający kod wykonywalny.
- Oceną prac zajmują się: Michał Grzegorzewski, Wojtek Gębczyk, Arek Waśniewski oraz Bartek Legiędź. Nie wykluczam dodatkowych osób :)
- Z nadesłanych odpowiedzi wybieramy jedną, wylosowaną spośród poprawnych, którą nagradzamy jedną książką, wybraną przez nas. Wybaczcie, ale nie będę zatrudniał żadnego prawnika potwierdzającego zgodność losowania z ustaleniami :)
- Osoba, która podeśle jako pierwsza poprawne rozwiązanie, będzie miała większe szanse na wygranie nagrody – jej dane pojawią się dwukrotnie w maszynie losującej :)
- Dana osoba może wygrać tylko jeden etap konkursowy. Oczywiście zachęcam do nadsyłania prac po wygranej – w końcu to zabawa i możemy zweryfikować, czy rozwiązanie jest ok.
- Lista nagród przeznaczonych na cały konkurs:

- W przypadku bardzo małej liczby odpowiedzi, lub innych przypadków, ciężkich w tej chwili do przewidzenia, zastrzegam sobie możliwość anulowania konkursu. :( Nagrody przewędrują wówczas na inny konkurs, być może atrakcyjniejszy :). Mamy jeszcze kilka pomysłów w zanadrzu… :)
- W konkursie może brać udział każdy, za wyjątkiem jego twórców i sponsorów.
Od czego zacząć?
Na początek sugeruję zapoznać się z samym Enterprise Library w wersji 3.1.
- Download Enterprise Library 3.1 (May 2007)
- Ważne i ciekawe strony:
- Czekać na kolejne teksty :)
To chyba wszystko. W przypadku uwag zachęcam do komentarzy.