-
Notifications
You must be signed in to change notification settings - Fork 4
Project structure
package ini berisi sumber data
sumber data atau penyedia data lokal, misalnya database
sumber data atau penyedia data remote, misalnya dari API
berisi data class model / POJO
model untuk networking
model untuk RequestBody saat ingin berinteraksi dengan API (GET,PUT,POST,DELETE)
result model dari API (API response)
berisi class repository (implementasi dari interfacenya), contoh class UserCredentialRepository: IUserCredentialRepository
, interfacenya berada di package domain/repository
berisi interface repository (untuk diimplementasikan ke classnya), contoh class UserCredentialRepository: IUserCredentialRepository
, classnya berada di package data/repository
berisi class untuk mewakili logika bisnis (business logic), seperti CRUD data dari database, api, dll
package foundation berisi class2 atau function sbg pondasi dari aplikasi, seperti reusable logic, reusable component, dll
package base berisi class BaseViewModel
dan composable function BaseScreenWrapper
, kalo kamu mau bikin destinasi baru, misalnya chart
Jadi di ChartScreen
nya itu di awalanya pake BaseScreenWrapper
, contoh
@Composable
fun ChartScreen(...) {
BaseScreenWrapper(...) {
// UI nya disini, misalnya tombol, text, dll
}
}
nah di chart screen ini kan juga butuh ViewModel, view modelnya itu dibikin gini
class ChartViewModel: BaseViewModel<...>() {...}
jadi di view modelnya itu jangan nge extend ViewModel
, pakenya BaseViewModel
unutk package extension itu isinya buat extension function aja, contoh
misal kita pengen bikin function buat nge sum int habis itu dikali, jadi kita bisa bikin gini
fun Int.sumAndTimes(other: Int) = (this + other) * other
jadi simpelnya package extension isinya itu kumpulan2 extension function
untuk package common, itu diisi sama class2 umum aja, kalo misalnya kamu bikin class tapi bingung mau di taruh di package mana, taruh di sini