Kod “wystarczająco dobry” czyli zło

Polemika nad wpisem Maćka o Kodzie “wystarczająco dobrym” dojrzewała dosyć długo – wszak Jego wpis pojawił się prawie 2 miesiące temu. Ale do rzeczy…

“Każdy kod można usprawnić / napisać lepiej. Bez wyjątku. Nie ma kodu idealnego (jak już zresztą kiedyś pisałem). Jednak w pewnym momencie trzeba przestać, tzn. nie można dopieszczać w nieskończoność jednego kawałka kodu zaniedbując wszystko dookoła. Ale nie oznacza to, że powinniśmy akceptować każde poplątane ścierwo jakie wyjdzie spod naszych skrzypiących paluchów i mówić "spoko, jest wystarczająco dobrze".” Maciej Aniserowicz

Maciek jako programista o szerszych niż przeciętnie horyzontach i (mam nadzieję*) produkujący kod lepszej jakości niż większość, posiadający inne standardy – w domyśle wyższe. No i tutaj widzę problem. Myślę, że nie rozminę się z prawdą, jeśli stwierdzę, że ponad połowa programistów pisze kiepski kod. Kiepski to znaczy taki bez testów, bez refaktoryzacji, ze skomplikowanymi warunkami w if-ach, opeartorami new to tu to tam, dziwnym nazwami zmiennych i funkcji, nie rozumiejących koncepcji Single Responsibility nie mówiąc już o innych klockach z pudełka SOLID. Ot poznałem język i piszę, potrafię napisać 4 pętle w jednej linni robiące 5 rzeczy – jestem zajebisty. Dla takich osób najczęściej niestety kod, który da się skompilować, uruchomić oraz dobrze działa przy 2 minutowym przeklikaniu jest wystarczająco dobry lub jak niektórzy mówią good enough. No i tutaj widzę poważny problem z wpisem Maćka. To co tam pisze procent jest prawdą dla programistów świadomych – reprezentujących pewien poziom. Dla pozostałych – good enough może być prostą wymówką. Program działa więc o co Ci chodzi, a to, że jak się wpisze w polu nip literę i program się wysypie no cóż – polski nip nie składa się liter więc niech użytkownik id….a nie wpisuje tam liter.

Osobiście proponuję aby nigdy nie używać stwierdzeń good enough oraz wystarczająco dobry. Niech to nie będzie wymówką. W życiu ma się albo wymówki albo wyniki. Dobrzy  i świetni programiści będą wiedzieć kiedy kod nie wymaga już dalszej pracy a ci przeciętni mam nadzieję że tak rozwiną swój warsztat, że dociągną do tych najlepszych.

* – mam nadzieję ponieważ tą opinię opieram na jego blogu a nie na wspólnej pracy.