Artykuły dla tagu .Net

freeimages.com
maj 09 2015
0

Pivot na sterydach - dodajemy nowe funkcje do kontrolki

Microsoft od zawsze stawiał na kontrolki w swoich aplikacjach. Mieliśmy z nimi do czynienia w Windows Forms, ASP.NET, WPF, a także Silverlight. Nie mogło ich oczywiście zabraknąć również w aplikacjach uniwersalnych.

Każda z kontrolek ma swój zestaw właściwości oraz zdarzeń, które z założenia mają zaspokajać podstawowe potrzeby użytkowników. W praktyce, zestaw ten często jest niewystarczający. Co zrobić w takiej sytuacji? Zamiast kombinować z istniejącymi właściwościami i metodami, możemy spróbować stworzyć swoje własne - tak jak mam to zamiar zrobić w dzisiejszym tekście z kontrolką Pivota, którą dobrze kojarzyć powinni szczególnie programiści Windows Phone:-)

freeimages.com
kwi 29 2015
0

Enum jako flaga

Enum jest bardzo pożyteczną konstrukcją, której używam praktycznie w każdym, nawet najmniejszym projekcie. Enumeracja ma praktycznie same zalety - przede wszystkim pozwala na definiowanie stałych wartości, które później można łatwo użyć w dowolnym miejscu w naszym kodzie. Jak na razie wszystko jest jasne i oczywiste. Mniej znaną właściwością enumów jest praca w trybie flagi, dzięki czemu enumeracja dostaje dodatkowego kopa;-) Przykład umieszczony w dalszej części tekstu pokaże jakie może to przynieść korzyści.

freeimages.com
kwi 17 2015
0

Polimorficzne tworzenie obiektów - usuwamy switcha

Sporo w ostatnim czasie pisałem o wzorcach projektowych. Starałem się w miarę dokładnie zgłębić ten temat i po stworzeniu kilku tekstów z tego cyklu, naszło mnie na małą refleksję - wzorce projektowe są nierozerwalnie związane z polimorfizmem.

Jeśli spojrzymy na poszczególne przypadki (zwłaszcza te z grupy konstrukcyjnych wzorców projektowych), to szybko przekonamy się, że elementem spójnym jest wspólny interfejs. Pojawia się on naprawdę w wielu wzorcach.

W wielu przypadkach jest on kluczem do sukcesu. Dzięki interfejsom możemy stworzyć kilka różnych klas, które będą zachowywać się inaczej, ale sumarycznie będzie można z nich korzystać w taki sam, uniwersalny sposób. I nie byłoby w tym nic złego, gdyby nie fakt, że tak utworzone byty trzeba jakoś wywoływać.. Niestety bardzo często robi się to za pomocą rozwiniętej logiki warunkowej. A przecież takich właśnie elementów chcieliśmy się pozbyć - prawda:)?

Na szczęście logikę warunkową można stosunkowo prosto wyrzucić, a za przykład posłuży nam kod opisywany w tekście poświęconym metodzie wytwórczej.

freeimages.com
kwi 02 2015
0

Wzorzec adapter - przykładowa implementacja w C#

Wiele mówi się o dobrych praktykach tworzenia kodu, używaniu wzorców projektowych i innych zmyślnych rozwiązań. W praktyce nie jest jednak tak kolorowo. Często terminy gonią, w kodzie pojawiają się klasy, których liczba linii liczona jest w setkach, a pośród nich znaleźć można wiele bezmyślnych powtórzeń oraz niepraktycznych interfejsów. Ale przecież obiecaliśmy sobie, że kiedyś to zmienimy, prawda?

Takie sytuacje lubią się mścić. Bardzo często musimy rozszerzać pewne istniejące rozwiązania. Pół biedy jeśli mamy dużo czasu na refaktoring. Gorzej jeśli go nam brakuje, bądź też rozpatrywany kod został już użyty w wielu różnych miejscach i jakiekolwiek zmiany w jego interfejsach nie wchodzę w ogóle w rachubę. Co zrobić w takiej sytuacji?

Wciąż możemy sięgnąć po wzorce projektowe, np. po tytułowy Adapter, który w pewnym sensie pozwoli na reużycie istniejącego rozwiązania.

freeimages.com
mar 20 2015
0

Jak najlepiej obsłużyć wyjątki w ASP.NET MVC?

Obsługa błędów nigdy nie była łatwym zadaniem, ale w większości przypadków zawsze wiedziałem z czego mogę skorzystać. Myślałem że z ASP.NET MVC będzie podobnie, a może nawet lepiej (w końcu jest to dosyć dobrze przemyślana platforma, co wielokrotnie już podkreślałem na blogu) i po części tak jest w istocie - mamy tu wręcz nadmiar możliwości:

  • Lokalna obsługa wyjątków za pomocą bloku try..catch
  • Obsługa wyjątków w metodzie Application_Error w pliku Global.asax
  • Filtry wyjątków
  • Strony custom errors (Web.config: configuration/system.web/customErrors)
  • Strony błędów web serwera (Web.config: configuration/system.webServer/httpErrors)

Jak widać, opcji jest kilka, a każda zachowuje się inaczej. Który wariant zatem wybrać? A może należy połączyć kilka opcji? Jeśli tak, jak to zrobić sprytnie, by nie duplikować kodu i nie doprowadzić do walki o wyjątek? Na te i inne pytania postaram się odpowiedzieć w dalszej części tekstu, gdzie przedstawię rozwiązanie, które zastosowałem w jednym z ostatnio tworzonych przeze mnie projektów.

freeimages.com
mar 11 2015
0

Wzorzec template method - przykładowa implementacja w C#

Dobry programista zawsze będzie się starał pisać czytelny kod. Kluczem do sukcesu jest w tym przypadku ciągła refaktoryzacja wsparta wzorcami projektowymi. Wzorce projektowe w wielu przypadkach pozwalają na zapewnienie elastycznych i skalowalnych rozwiązań, a ponadto sprzyjają w tworzeniu unikalnego kodu. Oczywiście nieodpowiednio użyte mogą również zaszkodzić - tak jak inne rzeczy w naszym codziennym życiu;-)

Dlaczego o tym wszystkim piszę? Przyczyna jest bardzo prosta - chciałbym w dzisiejszym wpisie przedstawić kolejny wzorzec typu must have, czy może w tym przypadku bardziej must use.

Template method (po polsku - metoda szablonowa) jest wzorcem niezwykle prostym w użyciu i jednocześnie bardzo użytecznym zarazem, ponieważ pozwala zredukować duplikowany kod do minimum, a czasem nawet do zera. Najwyższa więc pora na krótką prezentację;-)

freeimages.com
mar 06 2015
0

Wzorzec strategia - przykładowa implementacja w C#

Jeśli ktoś spytałby mnie o element który kojarzy mi się z programowaniem niezależnie od zastosowanego języka, to odpowiedziałbym prosto - instrukcje warunkowe. Wszelkiej maści IFy i switche pojawiają się w praktycznie każdym szanującym się języku programowania i tak naprawdę trudno sobie wyobrazić jakąkolwiek sensowną aplikację, która by z nich nie korzystała. I choć w teorii dają one wiele dobrego, to w praktyce, przy nieodpowiednim użyciu, mogą w sposób znaczący obniżyć czytelność tworzonego kodu.

Pewnym rozwiązaniem tego problemu są wzorce projektowe, które pokazują jak łatwo można uprościć instrukcje warunkowe, a czasem nawet całkowicie je wyeliminować. Tytułowy wzorzec strategii zalicza się do tego zaszczytnego grona wzorców, które walczą z tego rodzajami problemów. W praktyce jest on bardzo popularny, dlatego też wypadałoby by mieć przynajmniej jakiekolwiek pojęcie o nim. Pora najwyższa na usystematyzowanie swoich wiadomości:-)

freeimages.com
lut 06 2015
0

Universal apps - jak zidentyfikować urządzenie?

Ostatnio w pracy miałem do rozwikłania pewien banalny problem (przynajmniej tak mi się pierwotnie wydawało). Moim zadaniem było znalezienie programowego rozwiązania, które w sposób jednoznaczny pozwoli zidentyfikować smartfon z systemem Windows Phone. Aplikacja wykorzystywała architekturę WinRT (Universal Apps).

Na potencjalne rozwiązanie wpadłem stosunkowo szybko. Postanowiłem skorzystać z adresu MAC (odbiornik WiFi/moduł GSM). I wszystko byłoby w porządku, gdyby nie fakt, że nie można tego adresu w żaden normalny sposób wyciągnąć za pomocą kodu.. Musiałem więc poszukać innego rozwiązania. Na szczęście się udało, a wszystko to dzięki klasie HardwareIdentification.

freeimages.com
sty 23 2015
0

6 rzeczy których nie lubię w kodzie

Będąc programistą, bardzo często mam styczność z kodem innych. Jest to naturalne, bo nawet jeśli nie pracuję w danym momencie zespołowo, to i tak mogę wykorzystywać rozwiązania stworzone przez moich współpracowników, bądź też po prostu takie, które znalazłem w sieci. W wielu przypadkach są to dobre i przemyślane rozwiązania, ale czasem zdarzają się takie, które najchętniej od razu bym zrefaktoryzował.

Widziałem już w życiu tysiące linii kodu, który wyglądał lepiej, lub gorzej. Na tej podstawie postanowiłem wyłuskać 6 złych przykładów, których osobiście staram się unikać. Oczywiście tego typu rzeczy robiło wielu z nas, nie ma przy tym powodu do wstydu - każdy się przecież uczy. Ważne jest jednak by z tej nauki wyciągać racjonalne wnioski. Ułatwi to życie innym oraz Wam samym w momencie gdy przyjdzie Wam do tego kodu wrócić;-)

Oto mój TOP 6 rzeczy, których nie lubię w kodzie innych.

freeimages.com
sty 02 2015
0

Biblioteki warte poznania w C# - Fody

Programowanie nigdy nie było łatwe i szybkie, ale największe wyzwania stoją przed tymi, którzy chcą stworzyć prosty, czytelny, elastyczny i wydajny kod. Czy da się zawsze ładnie połączyć wszystkie elementy tej układanki? Niestety nie, ale to nie oznacza, że powinniśmy łatwo się poddawać.

W moim odczuciu kluczem do sukcesu, powinna być ciągła refaktoryzacja oraz re-używanie wcześniej napisanego kodu. W praktyce okaże się, że każdy projekt można poprawić. Zawsze znajdzie się coś, co można by zrobić lepiej. Dlaczego o tym wszystkim piszę? Powód jest prosty. Chciałbym Wam zaprezentować interesującą bibliotekę, która z pewnością pozwoli Wam na pewną optymalizację napisanego wcześniej kodu. Poznajcie Fody - bibliotekę która modyfikuję IL w czasie procesu budowania aplikacji.