Wstęp
Tworzenie czystego, efektywnego kodu to nie tylko kwestia estetyki – to absolutne niezbędne dla utrzymania kodu na przestrzeni czasu. W dzisiejszym artykule omówimy proces refaktoryzacji na przykładzie tworzenia tabliczki mnożenia w języku PHP. Zaczniemy od prostej wersji kodu, a następnie pokażemy, jak stopniowo go refaktoryzować, aby stał się bardziej zrozumiały i efektywny.
Pierwszy krok: Prosta tabliczka mnożenia
Początek to podstawy. Zaczynamy od stworzenia prostego kodu, który wygeneruje tabliczkę mnożenia 10×10. Język PHP jest doskonały do tego zadania, ponieważ jego składnia jest prosta i zrozumiała nawet dla początkujących programistów:
<?php
echo "<table>";
for ($i = 1; $i <= 10; $i++) {
echo "<tr>";
for ($j = 1; $j <= 10; $j++) {
$product = $i * $j;
echo "<td>" . $product . "</td>";
}
echo "</tr>";
}
echo "</table>";
?>
Ten kod korzysta z dwóch zagnieżdżonych pętli for
do generowania rzędów i kolumn tablicy, a następnie oblicza i wyświetla produkt w każdej komórce.
Drugi krok: Dodanie personalizacji tabliczce mnożenia
Zaczniemy dodawać trochę personalizacji do naszej tabliczki mnożenia, umieszczając znak mnożenia (*) w lewym górnym rogu. Jest to standardowa konwencja w tabliczkach mnożenia i pomoże użytkownikom zrozumieć, jak jest organizowana. Tutaj dodajemy dodatkowe instrukcje warunkowe if
do obsługi pierwszego wiersza i kolumny:
<?php
echo "<table>";
for ($i = 0; $i <= 10; $i++) {
echo "<tr>";
for ($j = 0; $j <= 10; $j++) {
if ($i == 0 && $j == 0) {
echo "<td>*</td>";
} else if ($i == 0) {
echo "<td>" . $j . "</td>";
} else if ($j == 0) {
echo "<td>" . $i . "</td>";
} else {
$product = $i * $j;
echo "<td>" . $product . "</td>";
}
}
echo "</tr>";
}
echo "</table>";
?>
Trzeci krok: Zmniejszenie powtórzeń
Jednym z podstawowych celów refaktoryzacji jest eliminacja powtarzalności. Powtarzający się kod jest trudniejszy do utrzymania i zwiększa ryzyko błędów. W naszym aktualnym kodzie mamy wiele powtarzających się wywołań echo "<td>"
. Możemy to uprościć, przechowując wartość, która ma zostać wyświetlona, w zmiennej:
<?php
echo "<table>";
for ($i = 0; $i <= 10; $i++) {
echo "<tr>";
for ($j = 0; $j <= 10; $j++) {
$cellValue = $i * $j;
if ($i == 0 && $j == 0) {
$cellValue = "*";
} else if ($i == 0) {
$cellValue = $j;
} else if ($j == 0) {
$cellValue = $i;
}
echo "<td>" . $cellValue . "</td>";
}
echo "</tr>";
}
echo "</table>";
?>
Czwarty krok: Wykorzystanie operatora trójargumentowego
Możemy pójść o krok dalej w redukowaniu powtórzeń, wykorzystując operatora trójargumentowego (ternary operator). To jest kompaktowy sposób zapisu instrukcji warunkowych, który jest szczególnie przydatny, gdy chcemy przypisać jedną z dwóch wartości do zmiennej w zależności od warunku. Zauważ, że dla pętli wewnętrznej zmieniamy wartość początkową $j
na 1, ponieważ pierwsza kolumna jest teraz obsługiwana przez kod poza pętlą for
:
<?php
echo "<table>";
for ($i = 0; $i <= 10; $i++) {
echo "<tr><td>" . ($i == 0 ? "*" : $i);
for ($j = 1; $j <= 10; $j++) {
echo "<td>" . ($i == 0 ? $j : $i * $j);
}
echo "</tr>";
}
echo "</table>";
?>
Piąty krok: Integracja znaczników tabeli
Na koniec, zintegrujemy otwierające i zamykające tagi tabeli HTML wewnątrz pętli:
<?php
for ($i = 0; $i <= 10; $i++) {
echo ($i == 0 ? "<table><tr><td>*" : "<tr><td>" . $i);
for ($j = 1; $j <= 10; $j++) {
echo "<td>" . ($i == 0 ? $j : $i * $j);
}
echo ($i == 10 ? "</table>" : "");
}
?>
Podsumowanie
Nasz kod jest teraz o wiele bardziej zwięzły i czytelny. Przy użyciu kilku prostych technik refaktoryzacji, przekształciliśmy naszą tabliczkę mnożenia z prostej, ale nieco powtarzalnej, struktury w elegancki kawałek kodu, który jest łatwy do zrozumienia i utrzymania.
Refaktoryzacja kodu to kluczowy aspekt dobrego programowania. To proces ciągłego poprawiania i optymalizacji kodu, który pomaga utrzymać go w czystości i sprawia, że jest łatwiejszy do zrozumienia i utrzymania.
Mam nadzieję, że ten artykuł pomógł Ci zrozumieć, jak podejść do refaktoryzacji w PHP. Pamiętaj, że możesz stosować te techniki do dowolnego języka programowania. Zasady te są użyteczne, nawet jeśli nie programujesz w PHP.