Di atas kertas, kode yang bersih (*clean code*) dan arsitektur yang rapi adalah idaman setiap developer. Namun di dunia nyata, aplikasi yang indah akan langsung ditinggalkan pengguna jika konsumsi baterainya boros atau animasi layarnya sering tersendat (*jank*).
1. Frame Budget 16.6ms: Batas Suci Pengalaman Mulus
Layar smartphone standar me-refresh tampilan sebanyak 60 kali per detik. Artinya, CPU dan GPU perangkat hanya memiliki waktu maksimal 16.6 milidetik untuk menyelesaikan seluruh siklus: memproses input sentuhan, menjalankan kalkulasi state, menyusun pohon tata letak (*layout*), dan menggambar piksel ke layar (*paint*).
Jika sebuah kalkulasi matematika (seperti parsing JSON ribuan transaksi upah atau enkripsi PDF) memakan waktu 25ms di UI thread utama, maka satu frame akan terlewat (*dropped frame*), dan mata pengguna akan menangkap gerakan patah-patah yang mengganggu.
- > processHeavyPayroll(List
2. Pencegahan Kebocoran Memori (*Memory Leak Prevention*)
Kebocoran memori pada aplikasi mobile sering kali terjadi bukan karena objek besar, melainkan karena referensi tersembunyi yang tidak dilepaskan:
- Uncancelled Stream/Timer Listeners: Timer kalkulasi shift yang tidak di-cancel saat halaman ditutup akan terus hidup di memori dan menguras baterai.
- Retain Cycles pada Closure: Selalu gunakan
[weak self]di Swift untuk mencegah dua objek saling menahan referensi secara permanen. - Image Caching Resizing: Jangan pernah me-render foto beresolusi 4000x3000 piksel ke dalam wadah avatar 60x60 piksel tanpa decoding thumbnail terlebih dahulu.
3. Kesimpulan: Rekayasa yang Bertanggung Jawab
Aplikasi mobile kelas dunia bukanlah aplikasi yang menggunakan fitur paling rumit, melainkan aplikasi yang paling menghormati keterbatasan sumber daya perangkat pengguna: memori, baterai, dan waktu respon antarmuka.