Learning
Clean Code

Osztályok és struktúra

Single Responsibility Principle, God Object elkerülése, kis, fókuszált osztályok.

Osztályok és struktúra

Az objektumorientált kódban az osztályok a kód szervezésének alapegységei. A tiszta osztályok a Single Responsibility Principle (SRP) mentén épülnek fel.

Single Responsibility Principle (SRP)

Egy osztálynak egyetlen oka legyen a változásra.

// ❌ Rossz – az osztály egyszerre felelős adatkezelésért, mentésért és megjelenítésért
class User {
  constructor(name, email) {
    this.name = name;
    this.email = email;
  }

  saveToDatabase() {
    db.insert('users', { name: this.name, email: this.email });
  }

  renderProfileCard() {
    return `<div class="profile">${this.name} - ${this.email}</div>`;
  }

  sendWelcomeEmail() {
    emailService.send(this.email, 'Welcome!', `Hi ${this.name}`);
  }
}
// ✅ Javított – minden osztály egy felelősséggel rendelkezik
class User {
  constructor(name, email) {
    this.name = name;
    this.email = email;
  }
}

class UserRepository {
  save(user) {
    db.insert('users', { name: user.name, email: user.email });
  }
}

class UserProfileRenderer {
  render(user) {
    return `<div class="profile">${user.name} - ${user.email}</div>`;
  }
}

class UserNotificationService {
  sendWelcome(user) {
    emailService.send(user.email, 'Welcome!', `Hi ${user.name}`);
  }
}

Kis, összefókuszált osztályok

// ❌ Rossz – az osztály mindenért felelős (God Object anti-pattern)
class ApplicationManager {
  handleUserAuth() { ... }
  processPayment() { ... }
  generateReport() { ... }
  sendNotifications() { ... }
  manageInventory() { ... }
}
// ✅ Javított – szétválasztott, egyértelmű felelősségek
class AuthService { handleUserAuth() { ... } }
class PaymentProcessor { processPayment() { ... } }
class ReportGenerator { generateReport() { ... } }
class NotificationService { sendNotifications() { ... } }
class InventoryManager { manageInventory() { ... } }

Rövid összefoglaló

  • Egy osztálynak egy felelőssége legyen – ez a Single Responsibility Principle lényege.
  • Kerüld a „God Object" anti-patterneket: az osztály ne próbáljon mindent csinálni.
  • A kis, fókuszált osztályok könnyebben tesztelhetők és karbantarthatók.

On this page