Seperti yang Anda katakan, acara adalah alat yang hebat untuk mengurangi sambungan antar kelas; jadi walaupun dapat melibatkan penulisan kode tambahan dalam beberapa bahasa tanpa dukungan bawaan untuk acara, ini mengurangi kompleksitas gambaran besar.
Acara bisa dibilang salah satu alat paling penting dalam OO (Menurut Alan Kay - Objek berkomunikasi dengan mengirim dan menerima pesan ). Jika Anda menggunakan bahasa yang memiliki dukungan bawaan untuk acara, atau memperlakukan fungsi sebagai warga negara kelas satu, maka menggunakannya adalah hal yang sulit.
Bahkan dalam bahasa tanpa dukungan bawaan, jumlah pelat untuk sesuatu seperti pola Observer cukup minim. Anda mungkin dapat menemukan perpustakaan acara generik yang layak di suatu tempat yang dapat Anda gunakan di semua aplikasi Anda untuk meminimalkan boilerplate. (Agregator acara umum atau mediator acara berguna di hampir semua jenis aplikasi).
Apakah ini berguna dalam aplikasi kecil? Saya akan mengatakan ya .
- Menjaga kelas dipisahkan satu sama lain menjaga grafik ketergantungan kelas Anda bersih.
- Kelas tanpa dependensi konkret dapat diuji secara terpisah tanpa mempertimbangkan kelas lain dalam tes.
- Kelas tanpa ketergantungan konkret membutuhkan tes unit lebih sedikit untuk cakupan lengkap.
Jika Anda berpikir "Oh, tetapi itu benar-benar hanya aplikasi yang sangat kecil, itu tidak terlalu penting" , pertimbangkan:
- Aplikasi kecil terkadang berakhir dengan digabungkan dengan aplikasi yang lebih besar nantinya.
- Aplikasi kecil cenderung menyertakan setidaknya beberapa logika atau komponen yang nantinya perlu digunakan kembali dalam aplikasi lain.
- Persyaratan untuk aplikasi kecil dapat berubah, mendorong perlunya refactor, yang lebih mudah ketika kode yang ada dipisahkan.
- Fitur tambahan dapat ditambahkan kemudian, mendorong kebutuhan untuk memperluas kode yang ada, yang juga jauh lebih mudah ketika kode yang sudah ada dipisahkan.
- Kode yang digabungkan secara longgar biasanya tidak membutuhkan waktu lebih lama untuk menulis daripada kode yang digabungkan secara ketat; tetapi kode yang dipasangkan dengan erat membutuhkan waktu lebih lama untuk melakukan refactor dan menguji daripada kode yang dipasangkan secara longgar.
Secara keseluruhan, ukuran aplikasi seharusnya tidak menjadi faktor penentu apakah akan mempertahankan kelas secara longgar; Prinsip SOLID tidak hanya untuk aplikasi besar, tetapi juga berlaku untuk perangkat lunak dan basis kode pada skala apa pun.
Faktanya, waktu yang dihemat dalam unit untuk menguji kelas yang longgar digabungkan secara terpisah harus melawan keseimbangan waktu tambahan yang dihabiskan untuk memisahkan kelas-kelas tersebut.