Jak Pisać Czysty Kod?

readTime

7 min

Jak Pisać Czysty Kod?

Chcesz pisać czysty kod?, to ten artykuł jest właśnie dla Ciebie.

Czysty kod to kluczowa kwestia, a umiejętność jego tworzenia odróżnia dobrego programistę od takiego, który stara się być programistą.

W tym wpisie dowiesz się, jak tworzyć czytelny, przejrzysty i zrozumiały kod, który nie tylko ułatwi Ci pracę, ale także sprawi, że inni developerzy będą chcieli chętnie z Tobą współpracować.

Co to jest Czysty Kod?

Zanim zaczniemy, warto zadać sobie pytanie: Czym właściwie jest czysty kod?

Czysty kod to taki, który jest łatwy do czytania, zrozumienia i utrzymania.

Taki kod jest napisany w sposób czytelny, z użyciem dobrych praktyk programistycznych, co sprawia, że jest mniej podatny na błędy i łatwiejszy do dalszego rozwijania i utrzymania.

Czysty kod to nie tylko działający kod, ale także kod, który jest czytelny dla innych programistów.

Oznacza to, że ktoś inny (lub Ty sam za kilka miesięcy) może łatwo zrozumieć, co robi Twój kod i dlaczego został napisany w ten sposób.

To nie jest tak, że Twój kod zawsze będzie idealny.

Często będzie to wynikało z ograniczonego czasu lub Twoich umiejętności. Mój kod również często nie jest idealny a zwłaszcza ten, który pisałem na początku kariery.

Chodzi o to żeby dążyć do ideału i zawsze mieć te zasady w pamięci. Bo nawet jeśli Twój kod nie będzie picco bello, to chociaż będzie zbliżał się do tego stanu

Dlaczego Warto Pisać Czysty Kod?

Możesz się zastanawiać, dlaczego warto poświęcić dodatkowy czas na pisanie czystego kodu.

Oto kilka powodów:

  • Łatwiejsze utrzymanie: Czysty kod jest prostszy do modyfikacji i debugowania.
  • Współpraca w zespole: Inni programiści łatwiej zrozumieją Twój kod, co przyspiesza pracę zespołową.
  • Mniej błędów: Przejrzysty kod zmniejsza ryzyko wprowadzenia błędów podczas zmian.
  • Skalowalność: Czysty kod jest łatwiejszy do rozbudowy w przyszłości.
  • Profesjonalizm: Pisząc czysty kod, pokazujesz, że jesteś profesjonalistą dbającym o jakość swojej pracy.

Dobre Praktyki Programistyczne

Przejdźmy teraz do konkretnych dobrych praktyk, które pomogą Ci pisać czysty kod.

Nazewnictwo Zmiennych i Funkcji

Nazewnictwo to podstawa czytelności kodu.

Dobre nazwy zmiennych, funkcji i klas powinny być opisowe i zrozumiałe.

Przykład złego kodu:

java
int a = 5;
int b = 10;
int c = a + b;

Przykład dobrego kodu:

java
int numbersOfApple = 5;
int numbersOfPeach = 10;
int totalFruitsNumber = numbersOfApple + numbersOfPeach;

Dzięki opisowym nazwom, od razu wiesz, co reprezentuje dana zmienna.

Dobre praktyki nazewnictwa:

  • Konsystencja: Używaj spójnego stylu nazewnictwa w całym projekcie.
  • Unikaj skrótów: Chyba że są one powszechnie znane.
  • Język: Wybierz jeden język (zdecydowanie zalecanym jest angielski) i trzymaj się go w całym kodzie.
  • Wielkość liter: Stosuj konwencję camelCase lub snake_case, ale bądź spójny.

Zasada DRY (Don't Repeat Yourself)

Zasada DRY mówi, aby unikać powtarzania tego samego kodu w różnych miejscach.

Powielanie kodu zwiększa ryzyko błędów i utrudnia utrzymanie.

Przykład złego kodu:

java
public void sendWelcomeEmail(String email) {
    // Code to send email
}

public void sendReminderEmail(String email) {
    // The same code to send email
}

Przykład dobrego kodu:

java
public void sendEmail(String email, String subject, String content) {
    // Code to send email
}

W ten sposób tworzymy jedną funkcję, która obsługuje różne przypadki.

Zasada KISS (Keep It Simple, Stupid)

Zasada KISS zachęca do utrzymania kodu w jak najprostszej formie.

Unikaj nadmiernej złożoności, która może utrudnić zrozumienie kodu.

Przykład złego kodu:

java
if (status == true) {
    if (user.isActive()) {
        if (!user.isBlocked()) {
            // Execute operation
        }
    }
}

Przykład dobrego kodu:

java
if (status && user.isActive() && !user.isBlocked()) {
    // Execute operation
}

Prostszy kod jest łatwiejszy do czytania i utrzymania.

Zasada YAGNI (You Aren't Gonna Need It)

Nie twórz funkcjonalności, której obecnie nie potrzebujesz.

Dodawanie nieużywanego kodu zwiększa złożoność i może wprowadzać dodatkowe błędy.

Przykład:

Jeśli obecnie Twoja aplikacja obsługuje tylko język polski, nie implementuj od razu mechanizmu wielojęzyczności, jeżeli nie jest to konieczne.

Formatowanie i Spójność Kodowania

Formatowanie kodu ma ogromny wpływ na jego czytelność. Używaj odpowiednich wcięć, odstępów i podziałów na linie.

Przykład złego kodu:

java
public class Example{
public void method(){
System.out.println("Unformatted code");}}

Przykład dobrego kodu:

java
public class Example {
    public void method() {
        System.out.println("Formatted code");
    }
}

Wskazówki dotyczące formatowania:

  • Używaj wcięć: Najczęściej 4 spacje lub tabulator.
  • Odstępy: Stosuj spacje wokół operatorów.
  • Linie: Nie twórz zbyt długich linii kodu; maksymalnie 80-120 znaków.

Komentowanie Kodu

Komentarze są ważne, ale kod powinien być na tyle czytelny, żeby komentarze nie były potrzebne zbyt często.

Przykład złego kodu:

java
// Increment the counter
i = i + 1;

Przykład dobrego kodu:

java
counter++;

Dobre nazewnictwo i czytelny kod eliminują potrzebę nadmiernego komentowania.

Unikanie "Śmierdzącego kodu"

Śmierdzący kod to pierwsze symptomy dalszych problemów.

Mogą to być:

  • Duplikacje kodu
  • Zbyt długie metody
  • Zbyt wiele parametrów
  • Nadmierna złożoność

Przykład:

Jeśli masz funkcję z 10 parametrami, warto ją podzielić na mniejsze, bardziej czytelne części.

Refaktoryzacja Kodu

Refaktoryzacja to proces ulepszania kodu bez zmiany jego funkcjonalności.

Regularna refaktoryzacja pomaga utrzymać czystość kodu i poprawia jego czytelność.

Przykład przed refaktoryzacją:

java
public void processData(String data) {
    // Code processing data
    // Code validating data
    // Code saving data
}

Przykład po refaktoryzacji:

java
public void processData(String data) {
    String processedData = process(data);
    if (isValidData(processedData)) {
        saveData(processedData);
    }
}

private String process(String data) {
    // Code processing data
}

private boolean isValidData(String data) {
    // Code validating data
}

private void saveData(String data) {
    // Code saving data
}

Teraz każda funkcja ma jedno zadanie, co zwiększa czytelność kodu.

Praktyczne Porady dla Początkujących Programistów

Ucz się od osób bardziej doświadczoncych

Jeśli jesteś początkującym programistą, warto korzystać z doświadczenia które masz w zasięgu ręki.

Czytaj ich kod, uczestnicz w code review, zadawaj pytania, rób więcej niż musisz.

Pisz Testy Jednostkowe

Testy jednostkowe pomagają w utrzymaniu jakości kodu i zapewniają, że zmiany nie wprowadzają błędów.

Przykład testu jednostkowego w Pythonie:

python
import unittest

class TestCalculator(unittest.TestCase):
    def test_add(self):
        self.assertEqual(add(2, 3), 5)

if __name__ == '__main__':
    unittest.main()

Unikaj Hardcodowania Wartości

Nie umieszczaj wartości stałych bezpośrednio w kodzie. Używaj stałych lub plików konfiguracyjnych.

Przykład złego kodu:

java
public void setLimit() {
    int limit = 100; // Hardcoded value
    // Code using limit
}

Przykład dobrego kodu:

java
private static final int USER_LIMIT = 100;

public void setLimit() {
    // Code using USER_LIMIT
}

Zasady SOLID

Omówmy teraz na szybko zasady SOLID, które są fundamentem do tworzenia czystego kodu.

S - Single Responsibility Principle

Klasa lub funkcja powinna mieć tylko jedną odpowiedzialność.

Przykład:

Klasa User powinna zarządzać danymi użytkownika, a nie np. połączeniem z bazą danych.

O - Open/Closed Principle

Kod powinien być otwarty na rozszerzenia, ale zamknięty na modyfikacje.

Przykład:

Zamiast modyfikować istniejącą klasę, stwórz klasę dziedziczącą i dodaj nowe funkcjonalności.

L - Liskov Substitution Principle

Obiekty klas pochodnych powinny być wymienialne z obiektami klas bazowych.

I - Interface Segregation Principle

Lepiej mieć wiele specyficznych interfejsów niż jeden ogólny.

D - Dependency Inversion Principle

Moduły wysokiego poziomu nie powinny zależeć od modułów niskiego poziomu.

Podsumowanie

Pamiętaj, że kod piszesz dla ludzi, nie dla maszyn. Pisanie czystego kodu to nie tylko znak profesjonalizmu, ale także inwestycja w przyszłość projektu.

Czystość kodu wpływa na jakość oprogramowania, ułatwia czytanie kodu, jego refaktoryzację i utrzymanie.

Pamiętaj o:

  • Dobrym nazewnictwie zmiennych i funkcji.
  • Stosowaniu zasad takich jak DRY, KISS, YAGNI.
  • Regularnej refaktoryzacji i utrzymaniu spójnego stylu.
  • Unikaniu 'śmierdzącego kodu' i nadmiernej złożoności.
  • Ciągłym uczeniu się i doskonaleniu swoich umiejętności.

Zacznij już dziś pisać czysty i zrozumiały kod 😉

authorImg

Witek Pruchnicki

Z pasją dzielę się wiedzą o programowaniu i nie tylko na różne sposoby