Composition-over-inheritance

  • Published on
    OOP pada embedded bukan tentang membuat kode “modern”, tetapi tentang mengontrol ownership, lifetime, dan dependency secara eksplisit. Banyak engineer yang memahami class, constructor, dan inheritance, namun belum memetakan konsep tersebut ke realitas firmware - stack terbatas, heap global, ISR preemption, dan sistem yang tidak pernah exit. Artikel ini membahas OOP dari perspektif embedded - encapsulation sebagai boundary hardware, constructor sebagai lifecycle binding, composition sebagai struktur aman, serta risiko inheritance, virtual table, dan hidden allocation. Tujuannya membentuk pola pikir struktural sebelum masuk ke disiplin dependency freeze pada tahap produksi.
  • Published on
    Artikel ini mengunci fondasi pengendalian dependency dalam firmware ESP32 berbasis Arduino. Masalah utama spaghetti firmware bukan pada bahasa, melainkan global mutable state tanpa owner dan dependency implicit lintas domain. OOP digunakan bukan untuk gaya, tetapi untuk mengenkapsulasi state, menetapkan ownership yang jelas, dan memaksa dependency eksplisit melalui constructor injection. Setiap peripheral dan domain logic harus dibungkus dalam class dengan state private. Singleton dan inheritance berlebihan dilarang; composition menjadi pendekatan default. Dengan struktur ini, dependency menjadi terarah, blast radius perubahan mengecil, dan race condition lebih mudah dianalisis sebelum sistem berkembang semakin kompleks.