Sztuka dla sztuki czy jednak jakiś głębszy sens?
Umiejętność programowania to nie wyłącznie znajomość języka programowania, kilku języków czy odpowiednie algorytmiczne myślenie, ale również znajomość i umiejętność wykorzystania dobrych praktyk programistycznych, wzorców projektów czy zaprojektowanie odpowiedniej architektury. W celu zapewnienia odpowiedniej jakości kodu, architektury, robimy spotkania, projekty czy też kontrolujemy siebie nawzajem poprzez code review.
Jednak myślę, że nie wszyscy mają świadomość tego po co to robimy? Po co nam kod wysokiej jakości? Po co nam dobra i przemyślana architektura? Przecież to może być napisane w taki sposób w jaki właśnie napisałem? Po co ja mam to poprawiać, przecież to działa? Czemu ten gość się nadal czepia?
Efekt
Każdy projekt ma jakieś wymagania i oczywiście najważniejsze jest spełnienie tych wymagań. Priorytetem jest przygotowanie odpowiednich rozwiązań dla problemów w danym projekcie. W przypadku efektu, jakość kodu raczej nie ma dużego znaczenia. Nawet wydajność kodu nie jest dużym problemem, bo w obecnych czasach raczej możemy dołożyć zasobów na tyle, aby to wszystko działało w sensownym czasie.
Utrzymanie i rozwój systemu
W przypadku utrzymania i dalszego rozwoju systemu jakość kodu i odpowiednia architektura mają już ogromne znaczenie. Od razu tutaj można zauważyć, że w przypadku projektów, które nie mają być w przyszłości rozwijane np. projekt ma działać tylko dwa tygodnie, a później zostanie wyłączony i po prostu wyrzucony do kosza, to jak najbardziej można iść na pewne kompromisy i nie przywiązywać dużej uwagi do jakości. Liczy się po prostu efekt.
Jednak jeśli tworzymy system długoterminowy to musimy liczyć się z jego dalszą konserwacją i na pewno ze zmianą wymagań. Każdy projekt ewoluuje i liczenie na brak zmian w przyszłości jest raczej dosyć naiwne, ale oczywiście może się tak zdarzyć. Zależy to też na pewno od rodzaju projektu czy jego wielkości.
Naszym celem powinno być przygotowanie takiego systemu, aby jego konserwacja nie stanowiła problemu, a zmiany wymagań były możliwie jak najłatwiejsze do wprowadzenia. Właśnie z tego powodu należy dbać o jakość kodu i dobrze zaprojektowaną architekturę.
Często ludzie myślą, że zapewnienie jakości jest drogie, bo to trzeba usiąść na spokojnie ;), pomyśleć, pokombinować, coś poprawić, napisać testy itd. Jednak w ogólnym rozrachunku, dobry projekt i pilnowanie tego na bieżąco jest szybsze i tańsze niż zrobienie bałaganu i późniejsze sprzątanie. Warto dodać, że system można doprowadzić do stanu nieodwracalnego tj. uporządkowanie będzie po prostu nieopłacalne.
Wydajność
Często programiści podpierają się tym, że rozwiązanie, które przygotowali jest bardziej wydajne niż inne, które byłoby czytelniejsze i łatwiejsze w późniejszej edycji. Oczywiście wydajność jest istotna, ale nie jest ona w tym wypadku dobrym argumentem. W obecnych czasach dołożenie zasobów jest relatywnie tanie, natomiast praca programistów jest droga. Dlatego przy projektowaniu rozwiązań powinniśmy stawiać na czytelność rozwiązania, tak, aby wdrożenie zmian po ewolucji wymagań nie stanowiło problemu. Wydajność powinna być stawiana dopiero na drugim miejscu. Oczywiście znajdziemy od tego wyjątki, bo są systemy gdzie taka wydajność może być kluczowa.
Podsumowanie
Odnosząc się do tytułu to pilnowanie jakości kodu może być w niektórych przypadkach sztuką dla sztuki. W przypadku prototypów i aplikacji, które będą działać tylko przez krótki okres czasu bez zmiany wymagań nie ma to raczej głębszego sensu. Jednak jeśli piszemy poważny projekt, który będzie działał przez długi czas, zmiany wymagań na pewno się pojawią. Wtedy zaprojektowana poprawnie architektura i dobrej jakości kod będą procentować, pozwalając na efektywną i również przyjemną pracę programistów.
Subscribe and master unit testing with my FREE eBook (+60 pages)! 🚀
In these times, the benefits of writing unit tests are huge. I think that most of the recently started projects contain unit tests. In enterprise applications with a lot of business logic, unit tests are the most important tests, because they are fast and can us instantly assure that our implementation is correct. However, I often see a problem with good tests in projects, though these tests’ benefits are only huge when you have good unit tests. So in this ebook, I share many tips on what to do to write good unit tests.
Bardzo długi artykuł jak na stwierdzenie prostego faktu, że „to zależy”. 🙂
Wydaje mi się, że jasno opisałem kiedy dbanie o jakość jest istotne.