Napisany przez paweltymura on Ponieważ mam tą przyjemność refactorować czasem naprawdę stary kod (z czasów .NET 1) to trafiam na takie fajne fragmenty “jak to się robiło kiedyś”. Kod który jest pod moją opieką staram się poprawiać, testować i upraszczać używając najnowszych sztuczek. Do kodu!
Strona głównaUżytkownik
tewux | użytkownik
Sztuka programowania 3231 dni, 22 godziny, 52 minuty temu 438 źrodło rozwiń
W starszych wersjach .NET, do dyspozycji był m.in. strumień GZipStream. Do prostych zastosować wystarczał ale zwykle, trzeba było opakowywać go w swoje klasy, aby np. skompresować cały folder. Od .NET 4.5 mamy klasę ZipFile, która dostarcza kilka przydatnych metod. Najpierw należy dodać referencję do System.IO.Compression.FileSystem, a potem wystarczy skorzystać jednej ze statycznych metod...
Powiedzmy, że potrzebujemy wyciągnąć PostCode użytkownika (a po drodze mamy jeszcze Address): string postCode = person.Address.PostCode.ToString(); Nie mamy pewności czy person nie jest nullem, a następnie czy person.Address nie jest nullem, a następnie person.Address.PostCode … . Aby się zabezpieczyć przed NullReferenceException musimy napisać trochę dodatkowego kodu, jak np: ...
Jakiś czas temu (nawet nie wiedziałem, że to już tyle czasu minęło!) .NET zaoferował nam możliwość korzystania z inicjalizatorów obiektu, zamiast stosowania klasycznej inicjalizacji...
Sztuka programowania 3899 dni, 20 godzin, 29 minut temu 285 źrodło rozwiń
W sieci można znaleźć mnóstwo przykładów w jaki sposób projektować aplikację. Tyle samo, albo i więcej, jest pytań programistów. Jedni szukają wiedzy, bo dopiero wchodzą w ten fascynujący świat. Inni szukają tylko potwierdzenia czy własne pomysły się sprawdzą. Sam nie raz szukałem odpowiedzi na pytanie czy moja koncepcja jest już przez kogoś gdzieś użyta. Jeśli znalazłem rozwiązanie, które było podobnie zrealizo...
Architektura 3938 dni, 20 godzin, 15 minut temu 312 źrodło rozwiń
CultureInfo zawiera informacje regionalne, przydatne, jeśli chcemy dostosować naszą aplikację do różnym krajów. Używamy tej klasy m.in. do określenia formatowania liczb, dat czy po prostu języka w jakim wyświetlamy tekst. Jeśli korzystamy z domyślnych ustawień regionalnych, wtedy poniższy kod wyświetli prawidłową wartość...
Cztery lata temu, popełniłem post „Zapomnijcie o windows forms”. Po czterech latach i wielu innych technologiach po drodze wracam do tematu. Ostatnio miałem okazję napisać mała aplikację w WPF, to był raczej test, a nie aplikacja dla klienta, jednak nie zmienia to faktu, że musiałem przysiąść i to napisać :) Nie wiem czy to tylko mnie tyczy, czy są też inni ludzie którzy podobnie myślą, ale osobiście nie zobaczyłem, żadnych pozytywnych zmian w tej technologii mimo upływu 48 miesięcy.
Trochę mnie ostatnio naszło na nietechniczne przemyślenia… Przyznam, że ten i poprzedni wpis o Code Review zainspirowane zostały trochę przez to, że do mojego zespołu w pracy dołączyło kilka nowych osób z kompletnie innymi doświadczeniami z poprzednim firm. Widzę to dobrze przy przeglądach kodu tych osób i widzę jak potrafią mieć odmienne nawyki dotyczące formatowania kodu, nazewnictwa zmiennych czy właśnie pewnych konwencji programistycznych. I właśnie przemyśleniami na ten temat chciałem się dziś z Wam...
Sztuka programowania 3946 dni, 54 minuty temu 310 źrodło rozwiń
Kilka tygodni temu, w jednym z wpisów, porównałem wydajność List z LinkedList. Przykład udowodnił, że dodawanie nowych elementów w LinkedList potrafi być nawet wolniejsze niż w przypadku List. Bardzo często, programiści myślą, że to LinkedList jest lepszy do dodawania nowych elementów, ponieważ łatwiej doczepić nowy wskaźnik niż alokować ponownie pamięć (też tak kiedyś uważałem). W przypadku List jest to jednak nie do końca prawda, ponieważ List
Sztuka programowania 3984 dni, 8 godzin, 16 minut temu 172 źrodło rozwiń
Po krótkiej przerwie, wracam do blogowania. Ostatnio, pokazałem jak C# traktuje przeładowywanie metod. Nie zawsze jest to proste i czasami naprawdę może spowodować błędy w interpretacji. Jeszcze raz chcę powtórzyć, że celem wpisów NIE jest zachęcenie czytelników do pisania skomplikowanych przeładowań. Wręcz odwrotnie – wiedząc jak trudno odgadnąć wynik należy po prostu unikać przedstawionych konstrukcji.
Sztuka programowania 4076 dni, 3 godziny, 43 minuty temu 197 źrodło rozwiń
Enumerable.Empty Jeśli funkcja zwraca IEnumerable, nie zwracaj pustej dopiero co stworzonej listy. Enumerable.Empty() jest właśnie tym czego oczekuje wywołujący kod. return new MyClass[0]; // Better return Enumerable.Empty
Sztuka programowania 4076 dni, 3 godziny, 43 minuty temu 423 źrodło rozwiń
Dość długo siedzę w IT. Zawsze od strony kodu i konkretu. Długo byłem programistą i wydaje mi się, że chociaż częściowo już rozumiem, co jest ważne. Co jest ważne, żeby stać się dobrym programistą. Jeśli chcesz poczytać to powiem w krótkich żołnierskich słowach co sprawiło, że nauczyłem się efektywnie tworzyć oprogramowanie. Oto sekret ;)
Raz na jakiś czas, od dawna, dość regularnie, szczególnie w okresie około-wakacyjnym, dostaję maile z pytaniami od osób zastanawiających się nad własną, szeroko pojętą, przyszłością. Przyszłością w kontekście zostania słodkim, wymiatającym, wypasionym programistą. Nie wiem właściwie skąd przeświadczenie że ja, “complete-stranger”, mogę posiadać odpowiedź na to pytanie:), ale jako że do mnie jest ono właśnie adresowanie, ...
Wpis ma na celu przybliżyć różnice pomiędzy najbardziej popularnymi architektonicznymi wzrocami projektowymi.
Architektura 4097 dni, 44 minuty temu 1016 źrodło rozwiń
Dalsze rozważania na temat nullanle.
Sztuka programowania 4109 dni, 6 godzin, 18 minut temu 183 źrodło rozwiń
Po dłuższej urlopowej przerwie w blogowaniu zacznę od zagadki z serii co zostanie wypisane na ekran, którą podsunął mi kolega Przemek: decimal d = 2; Console.WriteLine("d == 2 = {0}", d == 2); Console.WriteLine("d == (decimal)2 = {0}", d == (decimal)2); Console.WriteLine("d.Equals(2) = {0}", d.Equals(2)); Console.WriteLine("d.Equals((decimal)2) = {0}", d.Equals((decimal)2)); Tutaj jeszcze nie ma haczyka i odpowiedź to 4XTrue. Zmieńmy jednak jedną liniję: decimal? d = 2; Tym razem odpowiedź jes...
Sztuka programowania 4109 dni, 6 godzin, 18 minut temu 167 źrodło rozwiń
IKVM.NET to wirtualna maszyna Javy napisana w .NET oraz zbiór implementacji podstawowych klasy z Javy dzięki którym możliwe jest uruchamianie kodu Javy bezpośrednio w środowisku .NET/Mono. Paczka IKVM.NET zawiera dwa główne narzędzia ikvm.exe (maszyna wirtualna) oraz ikvmc.exe – translator bytekodu Javy do .NET IL. IKVM.NET (ikvmc) umożliwia wykonanie szybkiego portu (translacji) biblioteki Javy do .NET. W moim przypadku była to biblioteka Morofologik – analizator morfologiczny, słownik morfologiczny i ...
Sztuka programowania 4111 dni, 3 godziny temu 226 źrodło rozwiń
W kolejnym wpisie o linq przedstawię zasadę działania Func, Predicate, Action. Dla przypomnienia Linq jest połączeniem 5 elementów:extension methodsyieldFunc, Predicate, Actionwyrażenia lambdaIQueryable i Expression Trees Przyjrzyjmy się najpierw deklaracji tych trzech typów. C# public delegate void Action
Sztuka programowania 4134 dni, 10 godzin, 19 minut temu 210 źrodło rozwiń
Simple.Data jest lekkim frameworkiem dla .NET, który zapewnia dostęp do bazy w stylu ORM, ale bez obiektów (Object), bez wymogu łączenia się do relacyjnej bazy danych (Relational) a także bez generowania relacji (Mapping)! Wszystko dzięki typom dynamicznym w .NET 4!
Bazy danych i XML 4124 dni, 9 godzin, 54 minuty temu 613 źrodło rozwiń
Kilka dni temu opisywałem jak w VS 2008 debugować kod .NET Framework i obiecywałem sprostowanie do wersji 2012. Z tego co udało mi się dowiedzieć, temat nie jest zbyt jasny ale wygląda na to, że: 1. W niektórych wersjach VS2010 działało to ale potem znów zostało popsute. 2. W VS2012 funkcja nie działa. Jeśli komuś udało się to uruchomić pod VS 2012, proszę o komentarz pod wpisem. Link do Microsoft Connect, opisujący bug: http://connect.microsoft.com/VisualStudio/feedback/details/697947/net-framewo...