Refaktoryzacja kodu obiektowego

Założenie: Przekształcimy dużą klasę zawierającą wiele niezwiązanych ze sobą funkcji w kilka mniejszych, bardziej spójnych klas.

Krok po kroku:

  1. Krok 1: Identyfikacja problemu. Załóżmy, że mamy klasę User, która zarządza danymi użytkownika, wysyła emaile i generuje raporty. To zbyt wiele odpowiedzialności dla jednej klasy.
  2. Krok 2: Wydzielenie odpowiedzialności. Podzielimy klasę User na trzy mniejsze: UserData (dane użytkownika), EmailSender (wysyłanie emaili) i ReportGenerator (generowanie raportów).
  3. Krok 3: Implementacja nowych klas.
  4. 
    id = $id;
            $this->name = $name;
            $this->email = $email;
        }
    }
    
    class EmailSender {
        public function sendEmail(UserData $user, $subject, $message) {
            // Logika wysyłania emaila
            echo "Email sent to: " . $user->email . "\n";
        }
    }
    
    class ReportGenerator {
        public function generateReport(UserData $user) {
            // Logika generowania raportu
            echo "Report generated for: " . $user->name . "\n";
        }
    }
    
    $userData = new UserData(1, "Jan Kowalski", "jan.kowalski@example.com");
    $emailSender = new EmailSender();
    $reportGenerator = new ReportGenerator();
    
    $emailSender->sendEmail($userData, "Witaj!", "Witamy w naszym systemie!");
    $reportGenerator->generateReport($userData);
    ?>
    				
  5. Krok 4: Użycie nowych klas. Klasa User może teraz korzystać z tych mniejszych klas, delegując zadania.

Ten przykład pokazuje podstawy refaktoryzacji kodu obiektowego. Dalsza nauka obejmuje poznanie wzorców projektowych i zasad SOLID, które pomogą w tworzeniu bardziej elastycznego i łatwego w utrzymaniu kodu.

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *