Rumah > pembangunan bahagian belakang > tutorial php > YAGNI (Anda Tidak Akan Memerlukannya)

YAGNI (Anda Tidak Akan Memerlukannya)

DDD
Lepaskan: 2024-12-03 20:39:12
asal
346 orang telah melayarinya

YAGNI (You Aren

Prinsip Teras

Hanya laksanakan ciri apabila anda benar-benar memerlukannya, bukan apabila anda fikir anda mungkin memerlukannya pada masa hadapan.

Contoh

Abstraksi Pramatang (Buruk)

// Over-engineered solution anticipating future needs
class UserService {
    private $database;
    private $cache;
    private $logger;
    private $notifications;
    private $analytics;

    public function __construct(
        DatabaseInterface $database,
        CacheInterface $cache,
        LoggerInterface $logger,
        NotificationService $notifications,
        AnalyticsService $analytics
    ) {
        $this->database = $database;
        $this->cache = $cache;
        $this->logger = $logger;
        $this->notifications = $notifications;
        $this->analytics = $analytics;
    }

    public function createUser($data) {
        $this->logger->info('Creating user');
        $user = $this->database->insert('users', $data);
        $this->cache->set('user_' . $user->id, $user);
        $this->notifications->sendWelcomeEmail($user);
        $this->analytics->trackUserCreation($user);
        return $user;
    }
}
Salin selepas log masuk

Pelaksanaan Mudah (Baik)

class UserService {
    private $database;

    public function __construct(DatabaseInterface $database) {
        $this->database = $database;
    }

    public function createUser($data) {
        return $this->database->insert('users', $data);
    }
}
Salin selepas log masuk

Senario Dunia Sebenar

Contoh e-dagang

// Bad: Implementing unused features
class Product {
    private $name;
    private $price;
    private $stock;
    private $weight;          // Not needed yet
    private $dimensions;      // Not needed yet
    private $shippingZones;   // Not needed yet
    private $taxCategories;   // Not needed yet
    private $customFields;    // Not needed yet

    public function calculateShipping($address) {
        // Complex shipping calculation that isn't required
    }

    public function calculateTax($country) {
        // Complex tax calculation that isn't required
    }
}

// Good: Implementing what's needed now
class Product {
    private $name;
    private $price;
    private $stock;

    public function __construct(string $name, float $price, int $stock) {
        $this->name = $name;
        $this->price = $price;
        $this->stock = $stock;
    }
}
Salin selepas log masuk

Anti-Corak Biasa

  1. Membina sistem konfigurasi yang kompleks sebelum diperlukan
  2. Mewujudkan hierarki warisan yang terperinci untuk kelanjutan masa hadapan
  3. Menambah medan pangkalan data untuk potensi ciri masa depan
  4. Melaksanakan titik akhir API yang tidak diperlukan
  5. Mencipta penyelesaian generik untuk masalah khusus

Faedah

  1. Mengurangkan kerumitan asas kod
  2. Kos penyelenggaraan yang lebih rendah
  3. Kitaran pembangunan yang lebih pantas
  4. Lebih baik fokus pada keperluan semasa
  5. Kurang hutang teknikal

Kes Pengecualian

  1. Keputusan seni bina teras
  2. Struktur data yang mahal untuk ditukar kemudian
  3. Pertimbangan keselamatan
  4. Keperluan pematuhan kawal selia

Atas ialah kandungan terperinci YAGNI (Anda Tidak Akan Memerlukannya). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan