Masih ada orang di dunia yang tidak menggunakan generik jave dalam "coding biasa." Saya bisa percaya dengan template C ++, tapi generik? Mereka bahkan tidak sulit untuk dipelajari / digunakan. Serius fitur terbaik dari Java dan C ++ masing-masing adalah generik dan templat.
Cara terbaik untuk meyakinkan orang tentang berbagai hal adalah dengan membuat argumen yang meyakinkan, tidak mengancam, dan menjadi benar.
Selama Anda tidak melakukan sesuatu seperti menggunakan templat sebagai bahasa pemrograman Anda, polimorfisme parametrik (generik / templat) hampir pasti bagus.
1. Menghindari duplikasi kode.
Ini jelas, tetapi kode polimorfik adalah kode umum. Itu sebabnya disebut obat generik.
2. Mendukung pemeriksaan statis yang lebih baik.
Tanpa polimorfisme parametrik Anda akhirnya menulis hal-hal seperti public Object clone()
atau public boolean equals(object b)
yang bukan hanya kekejian, mereka memiliki tipe yang tidak memberikan informasi tentang apa yang mereka lakukan, dan akhirnya melemparkan pengecualian di semua tempat. Alternatif polimorfisme parametrik dilemparkan ke mana-mana
3. Kode OOP non parametrik polimorfisme pada dasarnya tidak dapat menangani "metode biner" dengan cara yang benar.
Anda sering menggunakannya.
4. Ini adalah praktik terbaik
Di Jawa, penggunaan obat generik dianggap praktik terbaik (lihat Java Efektif oleh Josh Bloch). Pemikir utama C ++ seperti Sutter dan Alexandrescu juga mendorong penggunaan templat untuk memecahkan berbagai masalah.
5. Ini sesuai dengan paradigma OO.
Orang sering tidak memerhatikan hal ini, tetapi kombinasi sub-pengetikan dan generik menghasilkan sistem yang JAUH lebih ekspresif, dan berorientasi objek daripada sistem apa pun dengan hanya satu di antaranya.
Pertimbangkan campuran Scala. Ini adalah fitur bagus yang memungkinkan Anda menarik objek dari bagian-bagian komponen. Generik dan templat dapat mensimulasikan beberapa manfaat ini. Misalnya, katakan salah satu objek Anda menggunakan database. Desain yang bagus akan membuat Anda abstrak akses database ke dalam kelas yang terpisah. Jika dilakukan dengan benar, ini tidak hanya memungkinkan Anda mengolok-olok penyimpanan data Anda (kunci untuk testabilitas) itu juga berarti bahwa Anda dapat menambahkan implementasi alternatif seperti database no-sql yang baru. Namun di sini, Anda mungkin memiliki masalah, mengenai implementasi mana yang Anda gunakan, Anda akan mendapatkan berbagai kemampuan objek bisnis Anda.
Generik untuk menyelamatkan!
public class Business<S extends Datastore>{
private S store; ...
}
Sekarang Anda dapat mulai membedakan Business
objek secara statis berdasarkan kemampuan untuk menggunakan fitur spesifik basis data. Anda masih memerlukan beberapa pengecekan runtime dan casting, tetapi Anda dapat mulai membuat kode JAUH lebih baik.
dan
6. Kode normal tidak ada.
Hanya ada tiga hal di dunia pemrograman:
- perpustakaan,
- konfigurasi, dan
- kode yang buruk.
Jika Anda tidak berpikir tentang kode Anda seperti itu adalah perpustakaan Anda dalam masalah serius ketika persyaratan untuk proyek Anda berubah. Arsitektur (bisa dibilang) adalah seni merancang API yang baik.
Saya menemukan sikap ini menakjubkan. Setelah Anda terbiasa pemrograman dengan tipe parametrized, tidak menggunakannya hanya membuat semuanya sakit. Dan, Java dan C ++ memiliki banyak bintik-bintik kasar yang mereka bantu atasi.