TEO KONKURS

Niech ten konkurs wpędzi Was w „ostrą jazdę bez trzymanki”. Kto będzie pierwszy? Na kogo spadnie szacunek .Net’owej społeczności?

Nagroda

Do zwycięzcy wyślę ładnie zapakowane 0.7 Jack’a Daniels’a i dziesięć setek Wiśniówki Lubelskiej.

Temat

Tematem konkursu jest zoptymalizowanie procesu zamiany ciągu bajtów na obiekty.

Zasady wygranej

Wersja uznana jest za najszybszą jeśli od poprzedniej najszybszej wersji będzie szybsza o 5% w każdym z 10 powtórzeń testu. Do mierzenia wydajności wykorzystany jest BenchmarkDotNet.

Nagroda zwycięscy zostaje przyznana wówczas gdy po pull request z najszybszą wersją przez kolejne 30 dni nikt nie nadeśle szybszej wersji.

Continue reading →

Ja nie mam czasu nie pisać testów jednostkowych

Czasami (czasami często) słyszę, że:

…ktoś nie napisał testu jednostkowego bo nie miał na to czasu.

Gdy to słyszę to aż bolą mnie zęby. Jak można nie mieć czasu na sprawdzenie, czy nasz kod działa poprawnie? Wtedy zawsze staram się wyjaśnić, że:

… ja nie mam czasu nie pisać testów jednostkowych.

Continue reading →

Poziomy abstrakcji

Kilka lat temu, ucząc się programowania w języku C++, natknąłem się na ten tekst.

„Komputery są jedynie urządzeniami elektronicznymi. Nie mają pojęcia o oknach czy menu, nie znają programów ani instrukcji, a nawet nie wiedzą nic o zerach i jedynkach. W rzeczywistości jedyne zmiany, jakie zauważają, to zmiany napięcia mierzonego w odpowiednich punktach układów elektronicznych. Nawet to jest dla nich pewną abstrakcją: w rzeczywistości elektryczność jest tylko wygodną intelektualną koncepcją dla zaprezentowania działania cząstek subatomowych, które z kolei są abstrakcją dla czegoś innego.”

„C++ dla każdego” Jesse Liberty

 

Kalkulator napisany z pomocą behavior-driven development (BDD)

Postawiłem sobie za cel napisanie kalkulatora przy użyciu metody BDD a wynikami mojej pracy chcę się z wami podzielić.

Kalkulator ten będzie zachowywać się jak ten z lat dziewięćdziesiątych, pokazany poniżej na obrazku. Mam jeszcze taki sam w domu — ma już chyba 20 lat. Ten, który tutaj zaimplementuje, będzie posiadał, tak samo, jak ten oryginalny, kilka dziwnych zachowań. Na przykład, przy każdym ponownym wciśnięciu „=”, liczba na wyświetlaczu będzie się zwiększać o jeden, jeśli wcześniej wykonaliśmy działanie „1+1”.

Continue reading →

Szybciej, wolniej, wolniej

Poniższy fragment książki jest brutalną prawdą, esencją strasznej zarazy panującej w firmach, która z zimną krwią wyniszcza wszystko, co jej stanie na drodze.

Systematyczne lekceważenie planowania i projektowania prowadzi do rozwoju w cyklu „szybciej, wolniej, wolniej”.

Wygląda to mniej więcej tak:

  1. Błyskawicznie dostarczasz wersję 1.0, pisząc cały kod na kolanie.
  2. Budujesz wersję 2.0, na bieżąco rozwiązując problemy stwarzane przez uciążliwy bałagan w kodzie.
  3. Wraz z kolejnymi wersjami rozwiązywanie problemów ze starym kodem „na bieżąco” sprawia, że bałaganu przybywa, a praca staje się coraz wolniejsza. Wyrzyscy stopniowo tracą wiarę w system, programistów i całą sytuację, w której się znaleźli.
  4. Gdzieś w okolicach wersji 4.0 zdajesz sobie sprawę, że nie wygrasz. Zaczynasz rozważać opcję przepisania systemu od podstaw.

„Refaktoryzacja do wzorców projektowych” Joshua Kerievsky

Continue reading →

Znajomość wzorców projektowych

„Jeżeli nie znasz wzorców, prawdopodobieństwo stworzenia wielkiego, wspaniałego projektu jest na pewno mniejsze. Wzorce projektowe mają uchwycić pewną mądrość. Korzystanie z zasobów mądrości jest zawsze pożyteczne.”

„{…}, wzorzec jest jednocześnie rzeczą, która pojawia się w świecie rzeczywistym, i regułą, która mówi nam, jak stworzyć taką rzecz. Jej zaprojektowanie i zbudowanie należy do nas. Jest to zarówno proces, jak i rzecz; zarówno opis rzeczy, która żyje własnym życiem, jak i opis procesu, który prowadzi do jej powstania.”

„Refaktoryzacja do wzorców projektowych” Joshua Kerievsky