Pada tahun lalu, saya menciptakan sistem baru menggunakan Dependency Injection dan wadah IOC. Ini mengajari saya banyak hal tentang DI!
Namun, bahkan setelah mempelajari konsep dan pola yang tepat, saya menganggapnya sebagai tantangan untuk memisahkan kode dan memperkenalkan wadah IOC ke dalam aplikasi warisan. Aplikasi ini cukup besar sehingga implementasi yang benar akan luar biasa. Bahkan jika nilainya dipahami dan waktu diberikan. Siapa yang diberikan waktu untuk hal seperti ini ??
Tujuannya tentu saja adalah untuk membawa unit test ke logika bisnis!
Logika bisnis yang terkait dengan panggilan basis data pencegah pengujian.
Saya telah membaca artikel-artikel dan saya memahami bahaya Injeksi Ketergantungan Orang Miskin seperti yang dijelaskan dalam artikel Los Techies ini . Saya mengerti itu tidak benar - benar memisahkan apa pun.
Saya mengerti bahwa ini dapat melibatkan banyak refactoring seluruh sistem karena implementasi memerlukan dependensi baru. Saya tidak akan mempertimbangkan menggunakannya pada proyek baru dengan ukuran berapa pun jumlahnya.
Pertanyaan: Apakah saya tetap bisa menggunakan DIA Poor Man untuk memperkenalkan testability ke aplikasi lawas dan memulai penggulingan bola?
Selain itu, apakah menggunakan DIA Orang Miskin sebagai pendekatan akar rumput untuk Injeksi Ketergantungan sejati merupakan cara yang berharga untuk mendidik tentang kebutuhan dan manfaat prinsip?
Bisakah Anda refactor metode yang memiliki ketergantungan panggilan database dan abstrak yang memanggil ke belakang antarmuka? Cukup memiliki abstraksi itu akan membuat metode itu dapat diuji karena implementasi tiruan dapat diteruskan melalui konstruktor yang berlebihan.
Di ujung jalan, begitu upaya mendapatkan pendukung, proyek dapat diperbarui untuk menerapkan wadah IOC dan konstruktor akan berada di luar sana yang mengambil abstraksi.
I consider it a challenge to decouple code and introduce an IOC container into a legacy application
tentu saja itu. Ini bernama utang teknis. Inilah sebabnya mengapa sebelum ada perombakan besar, lebih disukai refaktor kecil dan kontinu. Mengurangi kelemahan desain utama dan pindah ke IoC akan lebih sulit.