Proyek besar yang saya kerjakan selama beberapa tahun sekarang adalah aplikasi kontrol (dan semuanya) dari perangkat canggih, inti dari firmware-nya.
Perangkat ini cukup canggih, dengan fungsi yang lebih berbeda dari yang dapat saya katakan dari memori, dan 98% di antaranya ditangani oleh perangkat yang sangat besar ini. Di satu sisi, program ini cukup dapat dipertahankan, termodulasi dengan baik di dalam, didokumentasikan dengan baik, ada pemisahan fungsi yang wajar oleh direktori dan file dan sebagainya.
Tetapi pada akhirnya semua itu dikelompokkan menjadi satu aplikasi yang melakukan segalanya mulai dari komunikasi basis data jarak jauh, penanganan layar sentuh, menangani selusin berbagai protokol komunikasi, pengukuran, beberapa algoritma kontrol, pengambilan video, waktu matahari terbit dan tanggal paskah (serius, dan mereka adalah diperlukan untuk tujuan yang sangat serius!) ... Secara umum, hal-hal yang terkait sangat tipis, seringkali hanya terkait melalui beberapa data yang menetes di antara beberapa modul jauh.
Ini dapat dilakukan sebagai beberapa executable terpisah yang berkomunikasi satu sama lain, katakanlah, melalui soket, dengan tujuan yang lebih spesifik, mungkin dimuat / dibongkar sesuai kebutuhan, dan sebagainya. Tidak ada alasan khusus mengapa dibuat seperti ini.
Di satu sisi, ini berfungsi, dan bekerja dengan baik. Proyek ini lebih sederhana, tanpa mempertahankan pembangunan banyak binari. Struktur internal lebih mudah juga, ketika Anda bisa memanggil metode atau membaca variabel daripada berbicara melalui soket atau memori bersama.
Tapi di sisi lain, ukuran, skala benda ini hanya membuatku takut, rasanya seperti mengemudikan Titanic. Saya selalu diajarkan untuk memodulasi, dan mengelompokkan semuanya menjadi satu file raksasa terasa salah. Satu masalah yang saya tahu adalah crash besar pada satu (bahkan tidak signifikan) modul crash semua - tetapi kualitas kode memastikan ini tidak benar-benar terjadi dalam versi rilis. Kalau tidak, pemisahan internal dan pemrograman defensif memastikan ini akan tetap berjalan sebagian besar dengan benar bahkan jika setengah dari modul internal gagal secara normal karena suatu alasan.
Bahaya apa lagi yang saya abaikan? Mengapa ini membuat saya takut? Apakah ini hanya ketakutan irasional yang tidak diketahui? Apakah membuat proyek besar yang serius dengan cara ini merupakan praktik yang diterima? Baik menenangkan ketakutan saya atau memberi saya alasan yang bagus untuk mengubah versi 2.0 menjadi beberapa biner yang lebih kecil.