'Y'

Top pięć błędów programowania w Java

Wszyscy popełniają błędy. Nawet bardzo doświadczeni programiści popełniają błędy. Czasami to się zdaża z powodu nieuwagi czy niejasnego interfejsu API. Jednakże te błędy występują rzadko. Najbardziej powszechne błędy w programowaniu świadczą o niedostatecznej więdzy czy umiejętności.

Apr 28, 2017 2791
Wszyscy popełniają błędy. Nawet bardzo doświadczeni programiści popełniają błędy. Czasami to się zdaża z powodu nieuwagi czy niejasnego interfejsu API. Jednakże te błędy występują rzadko. Najbardziej powszechne błędy w programowaniu świadczą o niedostatecznej więdzy czy umiejętności.

W tym artykule chciałbym wspomnieć o najczęstszych błędach, które napotkałem podczas swojej profesjonalnej kariery programisty. Mam nadzieję, że moje doświadczenie pomoże innym zmniejszyć ilość bugów we współczesnych projektach.

Pierwszy błąd, o którym chciałbym wspomnieć to złe nazewnictwo elementów kodu. Każda zmienna, metoda, klasa czy pakiet powinien mieć dokładne precyzyjne znaczenie. Jak można to sprawdzić? Można zwrócić się do kodu, który napisałeś rok temu i po tym nie widziałeś. Czy pamiętasz znaczenia wszystkich elementów kodu?

Dobre nazwy czy identyfikatory kodu są łatwe do zrobienia. Używaj tych samych słów, których użyłbyś do opisu elementu kodu. Na przykład, spójrzmy na tę metodę:

errors in Java 1.png
Co oznacza według Ciebie? Czy możesz jej użyć? Jak masz ją zaimplementować? Kwestie pozostaną bez odpowiedzi, chyba że znasz autora tego kodu. Wszystkie te kwestie znikną, jeżeli przepisać kod:

errors in Java 2.png
Drugi błąd to naruszenie jednej z zasad programowania obiektowego - hermetyzacji. Nigdy nie uzyskuj dostępu do atrybutów innych obiektów w sposób bezpośredni lub pośredni. Jedyny wyjątek z tej reguły to przedstawienie danych dla warstwy interfejsu użytkownika czy wysyłanie do warstwy DAO. Na przykład:

errors in Java 3.png

Mimo że wywołujemy metody pobierające i nie uzyskujemy dostępu do pól klasy User, naruszamy hermetyzację. Nigdy nie powinieneś być świadomy wewnętrznej prezentacji danych w innych klasach. Powinieneś natomiast wiedzieć, jakie operacje są opatrzone w tej klasie i jak jej używać.

Trzeci błąd to brak bezpieczeństwa w Twoim kodzie. Podam taki przykład:

errors in Java 4.png

Napisaliśmy bardzo prostą procedurę formatowania procentowego. Czy jest bezpieczna? Tak, nigdy nie rzuca wyjątku. Jednak co się stanie, jeżeli ktoś poda wielkość ujemną, na przykład, -1. Ta metoda generuje błędny wynik. Czy możemy modyfikować ten kod w sposób następujący?

errors in Java 5.png

Nigdy nie zgeneruje błędnego wyniku. Jednakże tylko ukrywamy błąd. Ten fakt, że ktoś podaje błędny parametr, świadczy o innym błędzie programistycznym poza naszą klasą. Jeżeli mamy ten drugi błąd, nigdy się o nim nie dowiemy.

Czwarty błąd to brak automatyzacji testów. Zawsze pisząc kod powinniśmy napisać test, który ten kod weryfikuje. Jeżeli ma się projekty, zawierające miliony wierszy kodu lub przestarzały system w ogóle bez testów, należy pisać testy przynajmniej dla najważniejszych czy często używanych części systemu.

Piąty błąd to powielanie kodu czyli naruszenie zasady DRY (Don't Repeat Yourself). Zawsze podczas kopiowania części kodu do nowej lokacji należy pamiętać, że trzeba będzie modyfikować obydwa bloki jednocześnie. Co jeśli masz 10 czy 100 takich bloków kodu? Jak można szybko znaleźć wszystkie bloki tego kodu? Jak je znaleźć, jeżeli trochę zmienisz niektóre z nich?

errors in Java 6.png

Co tu oznacza 1? Czy oznacza, że gdyby delta była 2, index też miałby być 2? Wartości wpisane bezośrednio w kod (hard-coded) są czasem nazywane liczbami magicznymi i tak samo są przejawem ukrytego powielania.

To było, moim zdaniem, top pięć błędów programistycznych, które napotkałem w Java. Mam nadzieję, że moje doświadczenie może Ci pomóc udoskonalić swoją pracę.

Sergey Morenets
Software Development and Java Specialist 

Udostępnij


Masz jeszcze jakieś pytania?
Skontaktuj się z nami
Thank you.
Your request has been received.