Najlepsze praktyki w programowaniu


Cześć! Jeśli jesteś programistą, to wiesz, że kodowanie to nie tylko „pisanie kodu”, ale i robienie tego w sposób, który będzie czytelny, efektywny i łatwy do utrzymania. Wiesz, o co chodzi? Czasem łatwiej jest napisać coś na szybko, ale potem… no właśnie, potem masz problem, bo nikt (a nawet ty!) nie potrafi zrozumieć, co ten kod robi.
Chciałbym ci dziś opowiedzieć o kilku podstawowych zasadach, które sprawią, że będziesz pisać kod, który nie tylko działa, ale także będzie łatwy do utrzymania, rozwoju i współpracy z innymi. Jeśli dopiero zaczynasz, to świetnie, bo te zasady staną się dla Ciebie fundamentem, na którym zbudujesz swoje umiejętności.
Pisanie czytelnego kodu (czyli KISS i DRY)
Zaczniemy od absolutnych podstaw, które musisz przyswoić jak najszybciej:
DRY (Don’t Repeat Yourself) – czyli „Nie powtarzaj się”. Chodzi o to, żeby unikać powielania tego samego fragmentu kodu w różnych miejscach.
- 👉Kiedy tylko zauważysz, że ten sam kod pojawia się kilkakrotnie, warto go wyciągnąć do osobnej funkcji, klasy, lub po prostu napisać go raz, a później wywołać tam, gdzie to potrzebne. Dzięki temu zaoszczędzisz mnóstwo czasu i unikniesz błędów, które mogą wynikać z nieaktualnych kopii tego samego fragmentu kodu.
KISS (Keep It Simple, Stupid) – czyli „Zrób to prosto idioto”. Nie musisz pisać skomplikowanych rozwiązań, aby Twój kod był fajny.
- 👉Jeśli potrafisz rozwiązać problem w 5 linijkach kodu, to nie rób tego w 50. Prosty kod jest łatwiejszy do zrozumienia, testowania i modyfikowania.
Przykład:
Zamiast pisać coś takiego:
// Sprawdzanie poprawności e-maila
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Email jest poprawny!";
} else {
echo "Email jest niepoprawny!";
}
// Sprawdzanie poprawności adresu URL
if (filter_var($url, FILTER_VALIDATE_URL)) {
echo "URL jest poprawny!";
} else {
echo "URL jest niepoprawny!";
}
Możesz stworzyć funkcję, aby nie powtarzać kodu:
enum InputTypeEnum: string
{
case EMAIL = 'email';
case URL = 'url';
}
function validateInput(string $input, InputTypeEnum $type): bool {
return match($type) {
InputTypeEnum::EMAIL => filter_var($input, FILTER_VALIDATE_EMAIL),
InputTypeEnum::URL => filter_var($input, FILTER_VALIDATE_URL),
default => false,
};
}
// Użycie
$email = "test@example.com";
$url = "https://example.com";
if (validateInput($email, InputTypeEnum::EMAIL)) {
echo "Email jest poprawny!";
} else {
echo "Email jest niepoprawny!";
}
if (validateInput($url, InputTypeEnum::URL)) {
echo "URL jest poprawny!";
} else {
echo "URL jest niepoprawny!";
}
Komentowanie i dokumentowanie kodu
Komentowanie to podstawa, ale nie przesadzaj! Kod powinien mówić sam za siebie, ale jeśli już musisz dodać komentarz, rób to wtedy, gdy coś może być niezrozumiałe.
Przykład:
// Funkcja do obliczania średniej z tablicy
function calculateAverage(array $numbers): float {
// Sprawdzenie, czy tablica nie jest pusta
if (empty($numbers)) {
return 0.0;
}
$sum = array_sum($numbers);
return $sum / count($numbers);
}
$result = calculateAverage([10, 20, 30, 40]);
echo "Średnia wynosi: " . $result;
Nazewnictwo zmiennych, funkcji i klas
Dobre nazwy zmiennych, funkcji i klas to podstawa. Dzięki nim kod będzie bardziej zrozumiały. Chociaż języki programowania na to pozwalają i tworzenie nazw w języku polskim może kusić, dobrą praktyką jest używanie ich angielskich odpowiedników.
Zmienne: Używaj nazw, które jasno wskazują, do czego zmienna służy. Unikaj nazw typu
$x
czy$a
.- 👉Zamiast
$x
nazwij zmienną np.$emailAddress
lub$numberOfProducts
. Funkcje: Funkcje powinny robić jedną, konkretną rzecz i mieć nazwy zaczynające się od czasownika.
- 👉Zamiast
add
, lepiej napiszaddProductToCart
. Należy również zwrócić uwagę na to, aby zawsze dodawać typy do parametrów danej funkcji oraz typ, jaki funkcja powinna zwracać.
Przykład:
// Dobra nazwa funkcji
function addProductToCart(int $productId): void {
// Logika dodawania produktu do koszyka
echo "Produkt o ID $productId został dodany do koszyka.";
}
$productId = 123;
addProductToCart($productId);
Client
, Order
.Refaktoryzacja kodu – poprawianie kodu, nie tylko jego pisanie
Refaktoryzacja to proces poprawiania istniejącego kodu, aby był bardziej efektywny i czytelny, ale bez zmieniania jego funkcji.
Przykład:
Przykład kodu, który można poprawić:
$product1Price = 20;
$product2Price = 30;
$product3Price = 15;
$total = $product1Price + $product2Price + $product3Price;
Zamiast tego stwórz tablicę:
$productPrices = [20, 30, 15];
$total = array_sum($productPrices);
echo "Suma cen produktów: " . $total;
Testowanie – Bo kod musi działać!
Testowanie to jedna z najważniejszych rzeczy, których nie możesz pominąć. Pisanie testów zapewnia, że kod działa zgodnie z oczekiwaniami, a jeśli coś się zmieni, będziesz mógł szybko wykryć błędy.
W PHP najczęściej używa się frameworka PHPUnit do testowania.
Przykład:
Załóżmy, że mamy funkcję do obliczania ceny z rabatem:
function calculateDiscount(int $price, int $discount): int {
return $price - ($price * ($discount / 100));
}
Test jednostkowy za pomocą PHPUnit może wyglądać tak:
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;
class DiscountTest extends TestCase
{
public static function discountProvider(): array
{
return [
// Format: [cena, rabat, oczekiwany wynik]
[100, 10, 90], // Cena 100, rabat 10% = 90
[200, 20, 160], // Cena 200, rabat 20% = 160
[150, 0, 150], // Cena 150, rabat 0% = 150
[300, 50, 150], // Cena 300, rabat 50% = 150
[250, 100, 0], // Cena 250, rabat 100% = 0
];
}
#[DataProvider('discountProvider')]
public function testCalculateDiscount(int $price, int $discount, int $expected)
{
$this->assertEquals($expected, calculateDiscount($price, $discount));
}
}
calculateDiscount()
, testy szybko zweryfikują, czy kod wciąż działa poprawnie.Zarządzanie wersjami (Git)
Używanie Git jest absolutnie konieczne. Dzięki temu możesz śledzić historię swojego kodu, wracać do wcześniejszych wersji i współpracować z innymi programistami.
Przykład:
git init # Tworzymy nowe repozytorium
git add . # Dodajemy wszystkie zmiany do repo
git commit -m "feat: add discount calculation function" # Komitujemy zmiany
git push # Wysyłamy zmiany do zdalnego repozytorium
Unikaj „Hardcoding”
Hardcoding to twarde zakodowanie wartości w kodzie, które później trudno zmienić. Zamiast tego używaj zmiennych konfiguracyjnych lub plików zewnętrznych.
Zły przykład:
// Hardkodowany URL
$apiUrl = "https://example.com/api/v1/product";
Dobry przykład:
// Przechowywanie URL w pliku konfiguracyjnym
$config = require_once('config.php');
$apiUrl = $config['apiUrl'];
config.php
) to świetny sposób na przechowywanie takich wartości.Podsumowanie
Pamiętaj, że te zasady to tylko początek drogi do bycia dobrym programistą. Postaraj się pisać prosty, czysty kod, nie powtarzaj się, komentuj tylko wtedy kiedy to konieczne, testuj i używaj Git-a do zarządzania wersjami. Kiedy te praktyki wejdą Ci w nawyk, zobaczysz, jak łatwiej będzie Ci pracować i utrzymywać swój kod.
Powodzenia i niech kod zawsze będzie z Tobą! 💻🚀
Subscribe to my newsletter
Read articles from Andrzej Kostrzewa directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
