Praktik standar adalah untuk pergi dengan primitif, kecuali jika Anda berurusan dengan obat generik (pastikan Anda sadar akan autoboxing & unboxing !).
Ada sejumlah alasan bagus untuk mengikuti konvensi:
1. Anda menghindari kesalahan sederhana:
Ada beberapa kasus halus, non-intuitif yang sering menangkap pemula. Bahkan coders berpengalaman menyelinap dan membuat kesalahan ini kadang-kadang (mudah-mudahan ini akan diikuti dengan bersumpah ketika mereka men-debug kode dan menemukan kesalahan!).
Kesalahan yang paling umum adalah menggunakan a == b
alih-alih a.equals(b)
. Orang-orang terbiasa melakukannya a == b
dengan primitif sehingga mudah dilakukan ketika Anda menggunakan pembungkus Obyek.
Integer a = new Integer(2);
Integer b = new Integer(2);
if (a == b) { // Should be a.equals(b)
// This never gets executed.
}
Integer c = Integer.valueOf(2);
Integer d = Integer.valueOf(2);
if (c == d) { // Should be a.equals(b), but happens to work with these particular values!
// This will get executed
}
Integer e = 1000;
Integer f = 1000;
if (e == f) { // Should be a.equals(b)
// Whether this gets executed depends on which compiler you use!
}
2. Keterbacaan:
Perhatikan dua contoh berikut. Kebanyakan orang akan mengatakan yang kedua lebih mudah dibaca.
Integer a = 2;
Integer b = 2;
if (!a.equals(b)) {
// ...
}
int c = 2;
int d = 2;
if (c != d) {
// ...
}
3. Kinerja:
Faktanya adalah itu adalah lambat untuk menggunakan pembungkus Obyek untuk primitif daripada hanya menggunakan primitif. Anda menambahkan biaya instantiasi objek, panggilan metode, dll. Untuk hal-hal yang Anda gunakan di semua tempat .
Knuth's "... katakan sekitar 97% dari waktu: optimasi prematur adalah akar dari semua kejahatan" kutipan tidak benar-benar berlaku di sini Dia berbicara tentang optimisasi yang membuat kode (atau sistem) lebih rumit - jika Anda setuju dengan poin # 2, ini adalah optimasi yang membuat kode lebih rumit!
4. Ini konvensi:
Jika Anda membuat pilihan gaya yang berbeda hingga 99% dari programmer Java lain di luar sana, ada 2 kelemahan:
- Anda akan menemukan kode orang lain lebih sulit untuk dibaca. 99% dari contoh / tutorial / dll di luar sana akan menggunakan primitif. Setiap kali Anda membacanya, Anda akan memiliki pemikiran kognitif tambahan tentang bagaimana penampilannya dengan gaya yang Anda gunakan.
- Orang lain akan merasa kode Anda lebih sulit dibaca. Setiap kali Anda mengajukan pertanyaan pada Stack Overflow, Anda harus menyaring jawaban / komentar yang menanyakan "mengapa Anda tidak menggunakan primitif?". Jika Anda tidak percaya kepada saya, lihat saja pertarungan yang dimiliki orang-orang mengenai hal-hal seperti penempatan braket, yang bahkan tidak memengaruhi kode yang dihasilkan!
Biasanya saya akan membuat daftar poin tandingan, tapi jujur saya tidak bisa memikirkan alasan bagus untuk tidak mengikuti konvensi di sini!