Jakiś czas temu na LinkedIn trafiłem na artykuł dotyczący dziesięciu złotych zasad dobrego programisty. Jako, że idealnie się wpasowują w to, co sam chcę praktykować, choć nie zawsze mi się udaje w 100%, to opiszę je tutaj z mojego punktu widzenia.
Sztuka programowania 2824 dni, 12 godzin, 17 minut temu 494 źrodło rozwiń
O ReSharperze słyszał niemalże każdy, kto zajmuje się programowaniem w .NET. I o ile jest to rozszerzenie bardzo przydatne, to dziś chciałbym Wam opowiedzieć o nieco innym narzędziu, które co prawda nie odwali tyle roboty za Ciebie, ale jest w stanie zrobić bardzo wiele dla Ciebie. Mowa o NDpend, który jest w stanie przeanalizować nasz kod i poinformować nas, gdzie autor kodu dał ... ciała ;).
Czym w ogóle jest enkapsulacja (zwana również hermetyzacją)? Tak z grubsza: Jest to ukrywanie. Nasze obiekty powinny być skryte i nieśmiałe 😉 i nie uzewnętrzniać się… to znaczy swoich bebeszków. Co ukrywamy? Wszystko co się da, przede wszystkim pola klasy i w C# właściwości (properties). Najlepiej je ukryć, ale życie często jest inne i musimy je udostępnić. Krótko o tym czym jest i dlaczego warto ją stosować na prostych przykładach
Sztuka programowania 3084 dni, 1 godzinę, 19 minut temu 292 źrodło rozwiń
Ta kwestia od jakiegoś czasu zdaje się dzielić programistów niemalże tak mocno jak podział ...
Sztuka programowania 3086 dni, 21 godzin, 38 minut temu 161 źrodło rozwiń
W poprzednim wpisie przedstawiłem różnice pomiędzy logiką aplikacji, a logiką biznesową. Taki podział doskonale ilustruje zasadę podziału odpowiedzialności, tzw. Separation of Concerns, w skrócie SoC. Cofnijmy się do wspomnianego artykułu na moment i przypomnijmy sobie główne różnice pomiędzy logiką aplikacji, a logiką biznesową...
Sztuka programowania 3430 dni, 14 godzin, 10 minut temu 354 źrodło rozwiń
Dzisiaj ABC, ale chyba warte przypomnienia. Wprowadzony w .NET 3.0 Initializer syntax jest bardzo wygodny. Pozwala skrócić zapis i spowodować, że kod jest trochę czytelniejszy. Jednak coraz częściej mam wrażenie, że przez niego programiści .NET zapomnieli o konstruktorach.
Architektura 3530 dni, 21 godzin, 57 minut temu 485 źrodło rozwiń
Dlaczego tak wielu programistów tak często rzuca tytułowym tekstem (któremu zwykle towarzyszą mniej parlamentarne przerywniki) wykonując gest jak na zdjęciu powyżej? Odpowiedzi pewnie nie trzeba daleko szukać, dlatego dziś postanowiłem przyjrzeć się kilku powodom, dla których pada tak wiele pomstowań i siarczystych przekleństw z tak wielu pokoi projektowych Wybrałem 4 najczęstsze błędy JavaScript, bo niestety ale większość problemów związanych z pisaniem kod...
Myślę, że wiele osób po raz pierwszy siadających do projektu opartego na frameworku AngularJS może zadawać sobie tytułowe pytanie: jaka struktura projektu AngularJS będzie odpowiednia? Nie inaczej było w moim przypadku, na szczęście kolega natknął się i polecił mi szkolenie na Pluralsight, które wiele mi rozjaśniło dzięki czemu mam teraz na ten temat jako taki pogląd i dziś właśnie podzielę się nim z Wami.
W moich zamierzeniach ten temat miał być omówiony w jednej części, ale duża ilość komentarzy, pytań i uwag spowodowała, że powstała część druga. Istnienie drugiej (nieplanowanej) części posta mogłoby sugerować, że chcę się wycofać z części poglądów, które przedstawiłem w części pierwszej. Częściowo tak, ale nie w tę stronę co myślicie. Rzeczywiście zmieniłem zdanie, od dzisiaj będę pisał ToString() jeszcze częściej, tzn. dla każdej swojej klasy i struktury, nawet jeżeli tworzyłbym bibliotekę dla klienta...
Sztuka programowania 3609 dni, 1 godzinę, 58 minut temu 289 źrodło rozwiń
Gdy przychodzi czas na stworzenie aplikacji to najpierw staram się przemyśleć co ona ma robić i co z czym się łączy. Gdy obraz jest już w miarę wyraźny to zanim zacznę kodować jakieś prototypy i abstrakcje, przeglądam poniższą listę wzorców projektowych. Są ku temu dwa powody. Po pierwsze sprawdzam czy do mojego rozwiązania można dopasować jakieś wzorzec. Nie znam na pamięć wszystkich wzorców a czasem te mniej popularne (o których się normalnie nie pamięta) się przydają. Po drugie robię to aby trochę s...
Sztuka programowania 3620 dni, 6 minut temu 3425 źrodło rozwiń
Historia zaczyna się od prostego fragmentu kodu pokazanego poniżej. Kod ten to fragment walidatora, ktory ma za zadanie określić, czy dane są prawidłowe. Jeśli nie, to zmienna isValid powinna zostać ustawiona na false. var isValid = true; if (condition_1) isValid = false; if (condition_2) isValid = false; Kod ten działał do momentu, kiedy wprowadzono do niego małą zmianę pokazaną poniżej. Było to pewne uszczegółowienie logiki walidacji danych wejściowych. var isValid= true; i...
Sztuka programowania 3754 dni, 1 godzinę, 52 minuty temu 366 źrodło rozwiń
Zrównoleglenie danego algorytmu to jeszcze nie koniec wyzwań. Pytanie jakie należy postawić, to jak wiele stworzyć wątków? Musimy wziąć pod uwagę synchronizacje i problemy z tym związane. Jeśli mamy tylko 4 procesory, wtedy tworzenie więcej niż 4 wątków nie przyśpieszy obliczeń, jeśli wszystkie one zawsze będą zajęte. Tworzenie większej liczy wątków niż CPU, ma sens wyłącznie jak część z nich musi czekać na jakieś dane i tym samym, nie wykorzystują one w pełni cykli CPU. Liczba wątków, zależy od tego j...
Sztuka programowania 4002 dni, 1 godzinę, 27 minut temu 98 źrodło rozwiń
Na temat pętli w języku JavaScript pisałem już co nieco w czasie moich przygotowań do egzaminu 70-480, a konkretnie w artykule "Sterowanie przepływem operacji w języku JavaScript". Było to jednak dość ogólne potraktowanie tematu, a dziś chciałbym przyjrzeć się temu bliżej i pokazać jak korzystać z tego elementu języka w sposób jak najbardziej wydajny. W niniejszym poście przyjrzymy się przede wszystkim pętlom "for" oraz "for-in" jako najczęściej stosowane.Pętla for Opisywana pętla służy przede wszystkim...
W Visual Studio wersji Ultimate są narzędzia do analizowania architektury. Jednak są ludzie, którzy zamiast wydawać pieniądze na ultimate-a wolą iść do salonu i kupić sobie auto albo dwa. Jak jednak poradzić sobie bez diagramu warstw? Wystarczy pooglądać usingi. Single Responsibility Principle mówi, że klasa powinna robić jedną rzecz, mieć jedną odpowiedzialność. Jeśli ma jedną odpowiedzialność to nie powinna raczej grzebać we wszystkich warstwach. Wątpliwe jest aby klasa, która ma jedną ...
Sztuka programowania 4215 dni, 5 godzin, 10 minut temu 275 źrodło rozwiń
To jedyne przykazanie w całym Devkalogu pozostawione w oryginalnej formie. Nie kradnij srajtaśmy z biura? Owszem, nie kradnij, ale ja nie o tym. Nie kradnij poprzez piracenie oprogramowania/muzyki/filmów? Owszem. Ale ja nie o tym. Dawno temu, jeszcze w 2008 roku, Jeremy Millernapisał: If you’re writing ADO.Net code by hand, you’re stealing from your employe...
Sztuka programowania 4265 dni, 3 godziny, 25 minut temu 270 źrodło rozwiń
Kolejna część artykułu o dobrych i złych praktykach. Zapraszam do lektury: http://msdn.microsoft.com/pl-pl/library/dobre-i-zle-praktyki-w-c-sharp–czesc-6.aspx
Sztuka programowania 4410 dni, 1 godzinę, 1 minutę temu 350 źrodło rozwiń
Na moim blogu co jakiś czas można znaleźć informacje dotyczące pisania dobrego oraz złego kodu w c#. Oprócz tego zacząłem pisać serie artykułów związanych z tą tematyką. Wiele informacji w tych artykułach można było znaleźć już wcześniej na moim blogu ale myślę, że ten cykl stanowi dobre dopełnienie i podsumowanie tego wszystkiego co piszę tutaj. Oczywiście artykuły rozszerzają tematykę, oraz zawierają więcej przykładów więc tym bardziej zachęcam do lektury. Dziś została opublikowana pierwsza część: ht...
Sztuka programowania 4502 dni, 3 godziny, 43 minuty temu 630 źrodło rozwiń
Przechodząc na język C#, chcąc nie chcąc programuje się zgodnie z wyrobionych dotąd stylem i wg starych przyzwyczajeń. Niemniej, staram się weryfikować, czy obrana droga rzeczywiście jest tą, z której należy korzystać na nowym terenie, jakim jest C#. Dotąd często korzystałem z możliwości domyślnych parametrów, tak w konstruktorach, jak i w metodach (procedurach i funkcjach). Ostatnio mój kolega zauważył, że C# do konstrukcji klas nie używa konstruktorów z domyślnymi parametrami...
Sztuka programowania 4551 dni, 14 godzin, 24 minuty temu 131 źrodło rozwiń
Co byście powiedzieli na taki kod?publicclass Person { publicstring FirstName; publicstring LastName; publicstring GetFullName() { returnstring.Format("{0} {1}", FirstName, LastName); } } Na pierwszy rzut oka może nic poważnego. Jednak jeśli chcemy pisać kod zgodny z praktykami C#, powinniśmy zwrócić uwagę na następujące kwestie:Enkapsulacja, FirstName,LastName powinni być ukryte i ewentualnie wyeksponowane za pomocą setterow\getterów.GetFullName jest dobrym sposobem dla Javy (a w...
Od jakiegoś czasu staram się wykształcać w sobie nawyk regularnego pisania testów jednostkowych dla wykrytych błędów. Dlaczego? Możliwość sprawdzenia działania programu przy pomocy testów jednostkowych jest najprostszym wskaźnikiem jakości (choć bardzo ogólnym i nie jedynym!) wytwarzanego kodu. Testy jednostkowe są swego rodzaju drogowskazem, który stale pokazuje programiście dobry kierunek "jeżeli-czegoś-nie-można-przetestować-to-trzeba-to-przebudować".