Saya membaca "Ketergantungan Injeksi dalam. NET" oleh Mark Seemann (ini fantastis, dan harus dimiliki) dan penulis sering menggunakan kata "jahitan". Tetapi saya tidak mengerti apa artinya itu. Berikut ini contoh penggunaan kata ini:
Bab 7 menjelaskan cara menyusun objek dalam berbagai kerangka kerja konkret seperti ASP.NET MVC, WPF, WCF, dan sebagainya. Tidak semua kerangka mendukung DI sama baiknya, dan bahkan di antara mereka yang melakukannya, cara mereka melakukannya sangat berbeda. Untuk setiap kerangka kerja, mungkin sulit untuk mengidentifikasi SEAM yang memungkinkan DI dalam kerangka kerja itu. Namun, begitu SEAM ditemukan, Anda memiliki solusi untuk semua aplikasi yang menggunakan kerangka kerja khusus ini. Dalam bab 7, saya telah melakukan pekerjaan ini untuk kerangka kerja aplikasi .NET yang paling umum. Anggap saja sebagai katalog kerangka SEAMS.
Saya akan berterima kasih karena membantu saya memahami kata ini.
sumber
Jawaban:
Saya pikir istilah ini berasal dari Michael Feathers Bekerja Efektif dengan Kode Legacy di mana ia menjelaskan lapisan dalam perangkat lunak sebagai tempat di mana dua bagian dari perangkat lunak bertemu dan di mana sesuatu yang lain dapat disuntikkan. Analoginya adalah jahitan dalam pakaian: Tempat di mana dua bagian dijahit menjadi satu. Potongan di setiap sisi hanya menyentuh yang lain tepat di jahitan. Kembali ke perangkat lunak: Jika Anda mengidentifikasi jahitan, Anda telah mengidentifikasi tempat di mana ada antarmuka yang terdefinisi dengan baik. Itulah yang dapat Anda manfaatkan dalam DI, karena antarmuka seperti itu memungkinkan Anda untuk mengganti implementasi tanpa perangkat lunak lainnya dapat mengetahui (tanpa curang, bagaimanapun juga).
sumber
Berdasarkan jawaban Christian, setahu saya, istilah jahitan memang berasal dari buku Feathers, Bekerja Efektif dengan Legacy Code . Definisi ada di halaman 31:
Untuk memberikan contoh apa itu jahitan dan apa yang bukan, pertimbangkan kode Java berikut:
Jahitan yang dicontohkan di atas adalah jahitan kecuali:
Pada dasarnya, jahitan memudahkan pengujian unit. Saya tidak dapat menulis unit test
MyClass
karena panggilan keMyStaticClass.staticCall()
dan(new MyInstanceClass()).instanceCall()
. Setiap unit test untukMyClass
'sdoBunchOfStuff()
metode harus tesMyStaticClass.staticCall()
dan(new MyInstanceClass()).instanceCall()
dan semua dependensi mereka yang dipanggil. Sebaliknya, dengan menggunakan kelas-kelas non-final dengan metode-metode non-final (atau antarmuka yang lebih baik lagi), contoh-contoh yang disuntikkan dariFoo
danBarFactory
membuat unit test untukMyClass
memungkinkan untuk menulis dengan memfasilitasi mengejek.sumber