SwiftUI Seri 15|Bangun proyek SwiftUI yang dapat dikelola dari awal
Yang benar-benar menentukan apakah proyek dapat dimodifikasi nantinya adalah apakah batas negara bagian, tanggung jawab halaman, dan abstraksi komponen telah diatur dengan benar sejak awal.
Jika saya diminta untuk membangun proyek SwiftUI dari awal, hal pertama yang saya pertimbangkan bukanlah seperti apa direktorinya, dan saya juga tidak mengkhawatirkannya terlebih dahulu:
- Apakah Anda perlu mengirimkan template arsitektur lengkap? -Apakah saya perlu menggambar banyak lapisan dasar terlebih dahulu?
Hal pertama yang saya pikirkan adalah hal-hal ini:
- Bagaimana statusnya mengalir
- Cara mengalihkan tanggung jawab halaman
- Kapan dan sejauh mana komponen dipompa?
- Akankah proyek menjadi sulit untuk dimodifikasi setelah tiga bulan?
Karena banyak proyek SwiftUI yang awalnya cukup ringan, titik balik sebenarnya sering kali terjadi setelah dua atau tiga bulan:
- Semakin banyak halaman
- Keadaan semakin buruk
- Penggunaan kembali komponen menjadi semakin acak
- Mulai susun logika bisnis di View
Jadi yang sebenarnya ingin dipecahkan oleh “pemeliharaan” adalah stabilitas setelah pertumbuhan, bukan kecepatan pengembangan di minggu pertama.
1. Saya tidak akan membangun kerangka yang berat dari awal, tetapi perjelas dulu tanggung jawabnya.
Salah satu kesalahpahaman paling umum ketika memulai sebuah proyek dari awal adalah:
- Bisnis belum dimulai
- Pertama-tama tata letak satu set struktur lengkap yang terlihat lengkap
Hal ini belum tentu salah, namun risikonya adalah:
- abstrak terlalu dini
- Strukturnya tidak sesuai dengan bisnis sebenarnya
- Tim akan terus melewatinya nanti
Jadi saya lebih suka:
- Perjelas dulu batasan tanggung jawabnya
- Tambahkan lapisan secara bertahap seiring meningkatnya kompleksitas
Daripada “menjadi besar dan lengkap di hari pertama”, saya lebih menghargai “menjadi lancar di bulan pertama”.
2. Hal pertama yang biasanya saya pahami adalah tiga lapisan: lapisan halaman, lapisan status, dan lapisan kemampuan.
1. Lapisan halaman
Bertanggung jawab untuk:
- Struktur
- Kombinasi komponen
- Pemetaan status halaman
2. Lapisan status
Bertanggung jawab untuk:
- Status bisnis
- Proses asinkron
- Pergantian status semantik halaman
3. Lapisan kemampuan
Bertanggung jawab untuk:
- jaringan
- Penyimpanan
- Layanan domain
- Komponen umum dan kemampuan penataan
Ketiga lapisan ini belum tentu bisa dibongkar secara halus sejak awal, namun kesadaran harus ada terlebih dahulu. Jika tidak, proyek SwiftUI dapat dengan mudah masuk ke “tulis semuanya langsung di Tampilan”.
3. Saya akan sangat waspada terhadap “pandangan raksasa”
Menulis UI di SwiftUI sangat mudah, jadi salah satu bau tidak sedap yang paling umum adalah:
- Strukturnya ditulis dalam View
- Permintaan ditulis dalam View
- Penilaian status ditulis dalam View
- Perakitan copywriting juga ditulis dalam View
Tentu saja ini terlihat sangat cepat pada tahap awal, tetapi begitu proyek menjadi kompleks, Tampilannya akan segera menjadi:
- Sulit dibaca
- Sulit diubah
- Tidak dapat diprediksi
Masalahnya di sini adalah View mengambil terlalu banyak tanggung jawab non-display.
4. Saya sengaja memperlambat penggunaan kembali komponen daripada melakukannya dengan susah payah di awal.
Banyak tim mudah untuk mengejar “perpustakaan komponen universal” pada awalnya. Namun dalam proyek nyata, mengabstraksi terlalu dini seringkali lebih berbahaya daripada mengabstraksi nanti:
- Antarmuka akan dirancang terlalu lebar
- Banyak opsi disiapkan untuk kemungkinan skenario masa depan
- Komponen terkesan digunakan kembali, namun nyatanya siapapun yang menggunakannya akan merasa tidak nyaman
Jadi saya lebih suka membiarkan komponen berkembang dalam satu atau dua halaman nyata terlebih dahulu, lalu mengekstraknya setelah polanya cukup stabil. Komponen yang diekstraksi dengan cara ini biasanya lebih mendekati kegunaan nyata dibandingkan senam abstrak.
5. Batasan negara biasanya lebih penting daripada struktur direktori
Banyak proyek menghabiskan banyak waktu untuk berdebat di awal:
- Fitur-pertama atau Lapisan-pertama
- Cara membagi folder
Tentu saja ini penting, tapi yang lebih saya pedulikan adalah:
- Status manakah yang dikelola oleh halaman itu sendiri?
- Negara bagian mana yang dikelola oleh objek bisnis eksternal
- Status mana yang sebaiknya dibagikan dan mana yang tidak boleh dibagikan
Karena yang paling menentukan biaya perawatan seringkali adalah apakah statusnya berjalan atau tidak.
6. Inti dari pemeliharaan sebenarnya adalah membiarkan setiap lapisan “menjelaskan dengan jelas apa yang menjadi tanggung jawabnya”
Jika suatu proyek menjadi semakin sulit untuk diubah di kemudian hari, biasanya terdapat tanda-tanda berikut:
- Struktur halaman tidak menunjukkan prioritas
- Atribusi status menjadi semakin kabur
- Batasan komponen menjadi semakin abstrak
- Setelah persyaratan diubah, logika harus dilengkapi di banyak lapisan
Jadi untuk proyek SwiftUI yang dapat dipelihara, yang paling saya hargai biasanya adalah:
- Halaman dapat dibaca sekilas
- Status dapat dibedakan secara sekilas
- Batasan komponen bersifat alami -Logika bisnis tidak ditumpuk di View
Keempat hal ini sangat sederhana, namun sangat berharga dalam jangka panjang.
7. Kesimpulan: Saat membangun proyek SwiftUI dari awal, yang benar-benar perlu diatur dengan benar terlebih dahulu adalah batasannya, bukan templatenya.
Singkatnya, saya akan mengatakan:
Untuk membangun proyek SwiftUI yang dapat dikelola dari awal, hal terpenting adalah menetapkan batasan negara bagian, tanggung jawab halaman, dan abstraksi komponen dengan benar.
Ketika batas-batas ini ditetapkan, proyek akan berkembang lebih lama dan lebih stabil; Jika batasan tidak ditetapkan, betapapun canggihnya template tersebut, hal tersebut dapat dengan mudah tersapu oleh bisnis nyata.
What to read next
Want more posts about SwiftUI?
Posts in the same category are usually the best next step for reading more on this topic.
View same categoryWant to keep following #iOS?
Tags are useful for related tools, specific problems, and similar troubleshooting notes.
View same tagWant to explore another direction?
If you are not sure what to read next, return to the homepage and start from categories, topics, or latest updates.
Back home