Program yang besar membutuhkan desain agar tetap mudah diubah. Kita menerapkan pemecahan modul, SOLID, design patterns, dependency injection, dan rule of zero untuk menjaga arsitektur tetap sehat seiring berkembangnya kebutuhan.
Kriteria membagi program — responsibility, kohesi, coupling — dan refactor nyata dari satu fungsi main() monolitik menjadi tiga class yang terpisah.
Buka → # Abstraction dan EncapsulationAntarmuka vs implementasi, level abstraction, dan idiom PIMPL — menyembunyikan implementasi di balik pointer dengan unique_ptr dan forward declaration, lengkap dengan keuntungan kompilasinya.
Buka → # Separation of ConcernsMemisahkan parsing, logika bisnis, dan presentasi menjadi tiga lapisan — refactor nyata program laporan, arah dependensi, dan pengujian per bagian.
Buka → # Dependency Management di Level DesainArah dependensi antar modul, kopling erat vs kopling longgar, masalah circular dependency dan solusinya, inversion, serta antarmuka minimal — semua di level desain, bukan alat build.
Buka → # SOLID PrinciplesLima prinsip desain — SRP, OCP, LSP, ISP, DIP — masing-masing dengan potongan kode C++ nyata, ditutup satu program demonstratif multi-class dan tabel ringkas.
Buka → # Composition over InheritanceRecap keputusan is-a vs has-a lalu pendalaman praktis: decorator via composition, strategy lewat antarmuka runtime vs template policy, dan tabel keputusan desain.
Buka → # Design PatternsPola GoF yang paling relevan untuk C++ modern — Strategy, Observer, Factory Method, Adapter, dan Singleton beserta kritiknya — dengan tiga pola teruji dalam satu program.
Buka → # Dependency InjectionMengirim dependensi dari luar lewat constructor injection — antarmuka, implementasi nyata, test double (stub dan fake) untuk unit test — semuanya tanpa framework.
Buka → # API DesignMendesain antarmuka function dan class yang mudah dipakai dan sulit disalahgunakan: nama eksplisit, parameter minim, return type yang jujur, noexcept dan const correctness, sampai versi dan dokumentasinya.
Buka → # Rule of ZeroFungsi khusus sebagai bagian tak terlihat dari API class: Rule of Zero sebagai pilihan default, kapan Rule of Five benar-benar diperlukan, serta = default dan = delete untuk menyatakan niat.
Buka → # RefactoringRefactoring terencana: empat code smell yang paling sering muncul, langkah aman kecil-berurutan-teruji, dan refactor before/after dengan output yang dibuktikan identik.
Buka →