Saya secara umum menghadapi jauh, jauh, lebih banyak masalah pemeliharaan yang terkait dengan antarmuka murni daripada ABC, bahkan ABC digunakan dengan banyak pewarisan. YMMV - tidak tahu, mungkin tim kami hanya menggunakannya secara tidak memadai.
Yang mengatakan, jika kita menggunakan analogi dunia nyata, berapa banyak penggunaan yang ada untuk antarmuka murni sepenuhnya tanpa fungsi dan keadaan? Jika saya menggunakan USB sebagai contoh, itu adalah antarmuka yang cukup stabil (saya pikir kita berada di USB 3.2 sekarang, tetapi juga mempertahankan kompatibilitas ke belakang).
Namun itu bukan antarmuka stateless. Ini bukan tanpa fungsi. Ini lebih seperti kelas dasar abstrak daripada antarmuka murni. Ini sebenarnya lebih dekat ke kelas beton dengan persyaratan fungsional dan negara yang sangat spesifik, dengan satu-satunya abstraksi adalah apa yang dihubungkan ke port menjadi satu-satunya bagian yang dapat diganti.
Kalau tidak, itu hanya akan menjadi "lubang" di komputer Anda dengan faktor bentuk standar dan persyaratan fungsional yang jauh lebih longgar yang tidak akan melakukan apa pun sampai setiap produsen membuat perangkat keras sendiri untuk membuat lubang itu melakukan sesuatu, pada titik mana itu menjadi standar yang jauh lebih lemah dan tidak lebih dari "lubang" dan spesifikasi apa yang harus dilakukan, tetapi tidak ada ketentuan utama tentang bagaimana melakukannya. Sementara itu kita mungkin berakhir dengan 200 cara berbeda untuk melakukannya setelah semua produsen perangkat keras mencoba menemukan cara mereka sendiri untuk melampirkan fungsionalitas dan menyatakan "lubang" itu.
Dan pada saat itu kami mungkin memiliki produsen tertentu yang memperkenalkan masalah berbeda dari yang lain. Jika kita perlu memperbarui spesifikasi kita mungkin memiliki 200 implementasi port USB konkret yang berbeda dengan cara yang sama sekali berbeda untuk menangani spesifikasi yang harus diperbarui dan diuji. Beberapa produsen mungkin mengembangkan implementasi standar de facto yang mereka bagikan di antara mereka sendiri (kelas dasar analog Anda yang mengimplementasikan antarmuka itu), tetapi tidak semua. Beberapa versi mungkin lebih lambat dari yang lain. Beberapa mungkin memiliki throughput yang lebih baik tetapi latensi yang lebih buruk atau sebaliknya. Beberapa mungkin menggunakan daya baterai lebih dari yang lain. Beberapa mungkin terkelupas dan tidak berfungsi dengan semua perangkat keras yang seharusnya berfungsi dengan port USB. Beberapa mungkin memerlukan reaktor nuklir untuk dipasang untuk beroperasi yang memiliki kecenderungan untuk memberikan keracunan radiasi kepada penggunanya.
Dan itulah yang saya temukan, secara pribadi, dengan antarmuka murni. Mungkin ada beberapa kasus di mana mereka masuk akal, seperti hanya untuk memodelkan faktor bentuk motherboard terhadap casing CPU. Analogi faktor bentuk, memang, cukup banyak tanpa kewarganegaraan dan tanpa fungsi, seperti "lubang" analogis. Tetapi saya sering menganggap itu adalah kesalahan besar bagi tim untuk menganggap itu entah bagaimana unggul dalam semua kasus, bahkan tidak menutup.
Sebaliknya, saya pikir jauh lebih banyak kasus akan diselesaikan lebih baik oleh ABC daripada antarmuka jika itu adalah dua pilihan kecuali tim Anda begitu besar sehingga sebenarnya diinginkan untuk memiliki analog yang setara dengan 200 implementasi USB yang bersaing daripada satu standar pusat untuk. mempertahankan. Dalam tim mantan saya di, saya benar-benar harus berjuang keras hanya untuk melonggarkan standar pengkodean untuk memungkinkan ABC dan pewarisan berganda, dan terutama dalam menanggapi masalah pemeliharaan yang dijelaskan di atas.