Profil Pembicara: Konsultan, banyak terlibat dalam pengembangan Open Source. Pernah bekerja di The New York Times dan The Browser Company.
Topik: Implementasi TCA pada proyek besar, tantangan yang dihadapi, dan praktik terbaik.
Teknologi Lain: R Swift (implementasi pertama dari pola arsitektur Redux).
Kelebihan TCA
Arsitektur: Berdasarkan Redux dan Elm Microarchitecture.
Manajemen Status: Data aliran unidirectional dengan sumber tunggal kebenaran.
Ergonomi dan Konsistensi: Konsistensi tinggi di seluruh basis kode.
Dokumentasi dan Pengujian: Sangat baik, didukung oleh Point Free.
Isu dan Tantangan dengan TCA
Pengujian Ekstensif
Pendekatan Pengujian: Tes harus mereproduksi seluruh logika implementasi; menuntut banyak pengulangan.
Masalah Pendekatan: Tidak efisien, bertentangan dengan TDD dan menyebabkan fragilitas dalam pengujian.
Solusi: Kristof menyarankan untuk menonaktifkan pengujian ekstensif di level non-leaf dan fokus pada pengujian efek samping secara individual.
Maintainability
Isu Akses Kontrol: Enumeration actions tidak memiliki kontrol akses, menyebabkan eksposur internal implementasi.
Konvensi dan Penyelesaian: Pembagian actions menjadi view actions, delegate actions, dan local actions menggunakan protokol Feature Action.
Swiflint Rules: Menggunakan aturan Swiflint untuk memastikan implementasi mengikuti konvensi yang ditentukan.
Performa
Masalah Performa: Setiap mutasi status dalam TCA membutuhkan pengiriman action, yang bisa sangat berat.
Optimisasi: Menggunakan copy-on-write, diffing pada level store, dan pengimplementasian multi store.
Uji Coba: Melakukan pengujian performa dengan ketikan teks—TCA single store memerlukan 9 detik CPU time, sementara multi store hanya memerlukan 0,9 detik.
Rekomendasi: Penggunaan arsitektur multi store untuk performa dan batasan implementasi yang lebih baik.
Tools dan Pengembangan
Dashboard Performa: Digunakan untuk melacak biaya CPU dan memahami struktur aplikasi.
Spy Dashboard: Memvisualisasikan pengamatan actions dan status.
Custom Lifetime Tracker: Memonitor objek yang aktif dan memastikan tidak ada memory leak.
Kesimpulan dan Rekomendasi
Framework TCA: Sangat baik untuk proyek kecil hingga sedang, namun menghadapi tantangan serius pada proyek besar.
Multi Store: Direkomendasikan untuk meningkatkan performa dan maintainability.
Konsultasi: Kristof tersedia untuk konsultasi terkait pengembangan dan arsitektur menggunakan TCA.
Kontak: Ikuti di Twitter atau GitHub, atau kunjungi blognya di bwing.info.