Software design adalah keputusan tentang bagaimana memecah kode menjadi bagian-bagian yang dapat dipelihara. Section ini membahas prinsip dan pola arsitektur yang umum dipakai.
Pelajari prinsip clean code: nama bermakna, fungsi kecil, single responsibility, dan komentar yang menjelaskan mengapa bukan apa.
Buka → # SOLID PrinciplesPelajari lima prinsip SOLID: Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, Dependency Inversion.
Buka → # Separation of ConcernsPelajari pemisahan tanggung jawab antar layer: UI, business logic, dan data, dengan contoh kode konkret.
Buka → # Dependency InversionPelajari Dependency Inversion Principle: bagaimana modul tingkat tinggi bergantung pada abstraction, bukan concretion, sehingga kode menjadi mudah diganti dan diuji.
Buka → # Dependency InjectionPelajari pola Dependency Injection di Kotlin: constructor, setter, dan field injection, serta perbandingan container manual dengan framework seperti Koin, Dagger Hilt, dan Spring.
Buka → # Composition over InheritancePelajari mengapa composition lebih fleksibel daripada inheritance mendalam, dan bagaimana menyusun object dari perilaku-perilaku kecil menggunakan interface di Kotlin.
Buka → # ImmutabilityPelajari immutability di Kotlin: pakai val alih-alih var, copy data class alih-alih mutate, dan dapatkan thread-safety secara default.
Buka → # Domain ModelingPelajari domain modeling di Kotlin: value objects, entities, aggregates, dan bounded contexts untuk merepresentasikan aturan bisnis dalam kode.
Buka → # Layered ArchitecturePelajari layered architecture: presentation, application, domain, dan infrastructure, serta bagaimana setiap layer hanya bergantung pada layer di bawahnya.
Buka → # Clean ArchitecturePelajari Clean Architecture: entities, use cases, interface adapters, dan frameworks, dengan aturan dependency yang ketat dari luar ke dalam.
Buka → # Hexagonal ArchitecturePelajari Hexagonal Architecture (Ports and Adapters): memisahkan core domain dari driving adapter dan driven adapter, sehingga aplikasi mudah diganti UI maupun sumber data.
Buka → # Domain-Driven DesignPelajari Domain-Driven Design: strategic design dengan bounded contexts dan ubiquitous language, tactical design dengan entities, value objects, aggregates, repositories, dan domain services.
Buka → # Design PatternsPelajari katalog design patterns GoF: creational, structural, dan behavioral, dengan implementasi idiomatic Kotlin yang memanfaatkan fitur bahasa modern.
Buka → # Factory PatternPelajari Factory Pattern di Kotlin: companion object sebagai factory, generic interface Factory<T>, dan sealed class factory untuk parsing input terstruktur.
Buka → # Builder PatternPelajari Builder Pattern di Kotlin: data class dengan default parameter, named arguments, scope function apply, dan DSL-like nested config.
Buka → # Strategy PatternPelajari Strategy Pattern di Kotlin: interface Strategy klasik dan function type sebagai alternatif idiomatic yang lebih ringkas.
Buka → # Observer PatternPelajari Observer Pattern di Kotlin: Subject + Observer klasik, function-based subscriber, dan implementasi StateFlow-like yang terinspirasi dari ReactiveX.
Buka → # Adapter PatternPelajari Adapter Pattern di Kotlin: class adapter untuk interface tidak kompatibel, extension function sebagai adapter idiomatic, dan adapter untuk koleksi dan JSON.
Buka → # Decorator PatternPelajari Decorator Pattern di Kotlin: tambah behavior tanpa modifikasi original, dengan `by` delegation yang mengeliminasi boilerplate Java tradisional.
Buka → # Repository PatternPelajari Repository Pattern di Kotlin: abstract data access dengan generic interface Repository<T, ID>, decorator cache, specification pattern, dan adapter API.
Buka → # Memilih Arsitektur AplikasiPelajari cara memilih arsitektur yang tepat: decision tree sederhana untuk script tunggal, layered, clean, atau hexagonal, lengkap dengan trade-off dan evolusi.
Buka →