Saya telah mendengar argumen bahwa Anda harus menggunakan antarmuka paling umum yang tersedia sehingga Anda tidak terikat dengan implementasi tertentu dari antarmuka itu. Apakah logika ini berlaku untuk antarmuka seperti java.util.Collection ?
Saya lebih suka melihat sesuatu seperti yang berikut:
List<Foo> getFoos()
atau
Set<Foo> getFoos()
dari pada
Collection<Foo> getFoos()
Dalam kasus terakhir, saya tidak tahu set data apa yang saya hadapi, sedangkan dalam dua contoh pertama saya dapat membuat beberapa asumsi tentang pemesanan dan keunikan. Apakah java.util.Collection memiliki kegunaan di luar menjadi orangtua yang logis untuk kedua set dan daftar?
Jika Anda menemukan kode yang menggunakan Koleksi ketika melakukan peninjauan kode, bagaimana Anda menentukan apakah penggunaannya dibenarkan, dan saran apa yang akan Anda buat untuk penggantiannya dengan antarmuka yang lebih spesifik?
Collection<List<?>>
? Bicara tentang pengkodean horor!