Dzisiejszym wpisem odbiegnę trochę od typowego dla mojego bloga technicznego bełkotu, zamiast tego skupiając się dziś bardziej na zagadnieniu związanym z samym procesem (cyklem?) wytwarzania oprogramowania. W większości firm tworzących soft, w której przykłada się wagę do jakości tworzonego oprogramowania prowadzona jest praktyka Code-Review. W mojej osobistej karierze zawodowej, tak na prawdę zetknąłem się z tym zagadnieniem dopiero odkąd rozpocząłem pracę w Objectivity, a jako że pracuję już tutaj pra...
Sztuka programowania 3933 dni, 2 godziny, 21 minut temu 289 źrodło rozwiń
Z pewnością sporo osób zetknęło się z wzorcem MVVM (Mode View ViewModel), należącym do wzorców prezentacji (takich jak MVC lub MVP – z którego nota bene się on wywodzi), albo o nim słyszało. Wykorzystuje się go w oprogramowaniu wykorzystującym Windows Presentation Fundation (WPF). Nie zamierzam się tutaj wgłębiać w meandry tego wzorca. Chciałem się tylko odnieść do pewnej jego (nomen omen) właściwości, dotyczącej sposobu powiadamiania widoku, że właściwość modelu uległa zmianie. Dokonuje się tego ...
Sztuka programowania 3937 dni, 20 godzin, 43 minuty temu 170 źrodło rozwiń
W .NET bardzo łatwo podpisać cyfrowo jakiś pakiet. Przeważnie korzystając z WCF czy z innych technologii jest już to wykonane za nas w ramach framework’a. Bardzo często jednak pisząc aplikacje, chcemy zapewnić integralność danych. Za pomocą kilku linii kodu można tego dokonać. Przede wszystkim warto przyjrzeć się klasom RSACryptoServiceProvider oraz DSACryptoServiceProvider. Obie posiadają one metody takie jak SignData oraz VerifyData. Przyjrzymy się najpierw samemu podpisowi:privatestaticbyte[] SignDa...
Sztuka programowania 3940 dni, 23 godziny, 42 minuty temu 164 źrodło rozwiń
In this video you can find answers to the following questions: what is unit test? when to write unit tests? how to write unit tests? what is a Test Driven Development?
Sztuka programowania 3940 dni, 23 godziny, 42 minuty temu 130 ź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 3957 dni, 3 godziny, 49 minut temu 172 źrodło rozwiń
Czasami można zaobserwować następujący kod:int[] firstArray = Enumerable.Range(1, 1000).ToArray(); int[] secondArray = Enumerable.Range(1, 1000).ToArray(); foreach (int item in firstArray) { Process(item); } foreach (int item in secondArray) { Process(item); } Mam na myśli sytuacje kiedy mamy kilka osobnych tablic, ale przetwarzanie ich jest takie same lub bardzo podobne. Inny przykład to przetworzenie tablicy, a potem pojedynczego elementu pochodzącego z innego źródła...
Sztuka programowania 3963 dni, 17 godzin, 15 minut temu 211 źrodło rozwiń
Kiedyś pisałem o modyfikatorze sealed i dlaczego warto go używać jeśli chodzi o kwestie dobrych praktyk. Podobne mam zdanie co do modyfikatora virtual – używam wyłącznie jak mam takie wymagania. Zawsze zaczynam od najbardziej restrykcyjnych modyfikatorów. Klasy deklaruję jako sealed internal, a metody jako private. Nie zaznaczam metod jako virtual “na zapas”, ponieważ skoro nie są one zaprojektowane pod tym kątem to może przynieść to więcej kłopotów niż korzyści. Analogiczne zasady stosuje się np. w bezp...
Sztuka programowania 3963 dni, 17 godzin, 15 minut temu 262 źrodło rozwiń
W dzisiejszym wpisie, pokażę jaki wpływ mają klasy na zużycie pamięci. W ostatnim poście pokazałem korzyści płynące ze struktur jeśli mamy do czynienia z małymi kontenerami na dane. Najlepiej odpalmy po prostu następujący kod.
Sztuka programowania 3967 dni, 16 godzin, 55 minut temu 237 źrodło rozwiń
Zgodnie z obietnicą wypada przedstawić drugi z rezultatów inspiracji wynikłej ze swoistego dialogu (diaBlogu ;) ) pomiędzy Krzysztofem Morcinkiem a mną. Tym razem skupię się na następującym fragmencie jego wpisu ...
Sztuka programowania 3970 dni, 2 godziny, 47 minut temu 166 źrodło rozwiń
Wiele programistów c# zapomina, że struktury również istnieją w .NET. Mam wrażenie, że jest to konstrukcja bardziej popularna w CPP niż w C#. W praktyce jednak, wybranie struktur zamiast klas, może mieć kolosalne znaczenie jeśli chodzi o wydajność i płynność aplikacji. Nie jednokrotnie porównywałem te dwa typy obiektów na blogu więc podstaw nie będę omawiał tutaj. Przyjmuje, że każdy wie, że struktury znajdują się na stosie a obiekty klas na stercie. W poście chciałbym skupić się na następującym scenar...
Sztuka programowania 3971 dni, 22 godziny, 35 minut temu 385 źrodło rozwiń
Swojego czasu zachwalałem wytrawność kodu i zapraszałem do jego degustacji. Pocieszające jest, że nikt z tego powodu nie był zdegustowany, a wręcz przeciwnie – niektórych zainspirowałem. Nie ukrywam, że lubię być inspiracją, a już uwielbiam, kiedy wynikiem tejże inspiracji jest z kolei zainspirowanie mnie. Nic tak bowiem nie pomaga poszerzaniu wiedzy, jak wymiana poglądów. W przypadku, który mam zamiar omówić, moja inspiracja jest podwójna. Na razie jednak skupię się na jednym jej aspekcie. Krzysztof Mor...
Sztuka programowania 3971 dni, 22 godziny, 35 minut temu 239 źrodło rozwiń
Dzisiaj kilka przykładów pokazujących jak operować licznikami z poziomu c#. Czytanie jakichkolwiek liczników jest bardzo proste ponieważ .NET Framework dostarcza odpowiednie klasy.
Sztuka programowania 3975 dni, 16 godzin, 10 minut temu 196 źrodło rozwiń
… podczas rekrutacji, a zwłaszcza w codziennym kodowaniu. Jakie zna pan wzorce projektowe i proszę opisać jeden z nich? Mi też zdarzało się tutaj odpowiadać, że Singleton. Bo prosty, bo rozumiem jak działa i jakie problemy rozwiązuje.
Sztuka programowania 3979 dni, 3 godziny, 34 minuty temu 440 źrodło rozwiń
Unikaj przekazywania nulli. Jeśli nie będziesz ich przekazywał nie będziesz musiał sprawdzać czy ich nie masz. Prosto powiedzieć – trudniej zrobić. Proste rzeczy to przekazywanie pustych kolekcji, Null Object Pattern. Jednak to drugie może dobrze działać dla serwisów, ale już gorzej dla Value Objects. Często pojawiającym się kodem jest wyciąganie obiektów z repozytorium. va...
Sztuka programowania 3981 dni, 1 godzinę, 17 minut temu 274 źrodło rozwiń
Był taki smutny czas, że struktura dziedziczenia w moich testach zdecydowanie przerastała stopniem skomplikowania dziedziczenie w testowanym kodzie. A bo jedna klasa bazowa dla testów umożliwiała na przykład kontakt z prawdziwą bazą. Inna – testy z bazą in-memory. Jeszcze inna – puszczanie requestów do systemu. I tak dalej. Efekt był taki, że de facto wszystkie testy dziedziczyły ze wszystkiego. Fuj na maxa, z pryszczem jeszcze ohydnym....
Sztuka programowania 3981 dni, 1 godzinę, 17 minut temu 164 źrodło rozwiń
Kilka spostrzeżeń po Krakowskim Global Day of Coderetreat 2013. Kilka spostrzeżeń o pair programming, pythonie, narzędziach itd
Sztuka programowania 3985 dni, 5 godzin, 22 minuty temu 160 źrodło rozwiń
ScreenCast pokzuje podstawowe techniki refaktoryzacji kodu na przykładzie małego programu. Ten odcinek jest jednym z serii pt. "Przykladowa Refaktoryzcja Kodu". W tym ScreenCasie poruszyłem nast. zagadnienia: 1. Termin TDD (http://pl.wikipedia.org/wiki/Test-dri...) 2. Refaktoryzacja Link do kodu zrodlowego refaktoryzowanego w ScreenCascie: https://github.com/pawelklimczyk/ScreenCasts
Sztuka programowania 3985 dni, 5 godzin, 22 minuty temu 36 źrodło rozwiń
ScreenCast pokazuje przygotowanie testow regresyjnych prezd refaktoryzacja kodu na przykładzie małego programu. Ten odcinek jest jednym z serii pt. "Przykladowa Refaktoryzcja Kodu". W tym ScreenCasie poruszyłem nast. zagadnienia: 1. Narzedzie Resharper (http://www.jetbrains.com/resharper/) 2. Biblioteka nUnit (http://www.nunit.org) 3. Testy regresyjne Link do kodu zrodlowego refaktoryzowanego w ScreenCascie: https://github.com/pawelklimczyk/ScreenCasts
Sztuka programowania 3985 dni, 5 godzin, 22 minuty temu 200 źrodło rozwiń
ScreenCast pokzuje podstawowe techniki refaktoryzacji kodu na przykładzie małego programu. Ten odcinek jest jednym z serii pt. "Przykladowa Refaktoryzcja Kodu". W tym ScreenCasie poruszyłem nast. zagadnienia: 1. Narzedzie NCrunch (http://www.ncruchn.net/) 2. Termin Cyclomatic Complexity (http://en.wikipedia.org/wiki/Cyclomat...) 3. Refaktoryzacja Link do kodu zrodlowego refaktoryzowanego w ScreenCascie: https://github.com/pawelklimczyk/ScreenCasts
Sztuka programowania 3985 dni, 5 godzin, 22 minuty temu 47 źrodło rozwiń
W dzisiejszym poście pokażę kilka błędów popełnianych podczas próby oszacowania efektów optymalizacji a raczej mikro-optymaliacji. Częściowo popełniałem te błędy na moim blogu, ale zawsze wykonywałem pomiary w pętli, co niwelowało te drobne różnice.
Sztuka programowania 3993 dni, 21 godzin, 20 minut temu 159 źrodło rozwiń