Katakanlah saya memiliki versi aplikasi yang gratis dan berbayar. Versi berbayar adalah superset versi gratis mengenai fitur yang tersedia bagi pengguna, artinya versi berbayar akan memiliki semua fitur aplikasi gratis plus tambahan.
Apakah ada pola untuk beralih ketersediaan fitur berdasarkan pada flag yang dimuat saat startup (mis. Gratis / berbayar)?
Saya tidak suka gagasan memiliki blok kode berikut di mana-mana:
if(isFreeVersion){
// ...
} else {
// ...
}
Memiliki 2 cabang git yang terpisah untuk setiap versi bukanlah suatu pilihan karena itu berarti mempertahankan 2 (atau lebih) sumber kode, tampaknya tidak praktis secara umum dan dibahas lebih lanjut di sini: Mempertahankan Dua Versi Perangkat Lunak yang Terpisah Dari Codebase yang Sama dalam Kontrol Versi .
Apakah ada cara untuk melakukan ini, sementara masih memiliki basis kode tunggal dan tidak membuang sampah sembarangan kode dengan pernyataan bersyarat yang memeriksa bendera gratis / berbayar?
Saya yakin ini telah dibahas berkali-kali sebelumnya dan saya yakin ada beberapa pola untuk mendekati masalah ini, tetapi saya tidak dapat menemukannya.
Kami menggunakan Android / Java.
if
pemeriksaan untuk menyembunyikan kontrol untuk fitur terlarang atau melakukan dialog sembulan ketika pengguna mencoba melakukan apa yang tidak diizinkan. Saya berharap menemukan cara untuk menghindari banyak persyaratan dalam kode