Standart uygulama, jeneriklerle ilgilenmediğiniz sürece, ilkellerle gitmektir ( otomatik kutulama ve kutudan çıkarma işleminin farkında olduğunuzdan emin olun !).
Sözleşmeyi takip etmek için bir takım iyi sebepler var:
1. Basit hatalardan kaçınırsınız:
Yeni başlayanları yakalayan bazı ince, sezgisel olmayan durumlar vardır. Tecrübeli kodlayıcılar bile bazen hata yapar ve bu hataları yaparlar (umarım bunu kodun hatalarını bulup hatayı bulduklarında küfür izlerler!).
En yaygın hata a == b
yerine kullanmaktır a.equals(b)
. İnsanlar a == b
ilkellerle çalışmaya alışkındır, bu nedenle Object sarmalayıcılarını kullanırken kolayca yapılabilir.
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. Okunabilirlik:
Aşağıdaki iki örneği ele alalım. Çoğu insan ikincisinin daha okunaklı olduğunu söylerdi.
Integer a = 2;
Integer b = 2;
if (!a.equals(b)) {
// ...
}
int c = 2;
int d = 2;
if (c != d) {
// ...
}
3. Performans:
Aslında öyle olduğunu sadece temel öğeler kullanmaktan daha öncülleri için Nesne sarmalayıcılarını kullanmak daha yavaş. Nesne somutlaştırmanın maliyetini, yöntem çağrılarını vb. Her yerde kullandığınız şeylere ekliyorsunuz .
Knuth'un "... zamanın yaklaşık% 97'sini söyle: erken optimizasyon tüm kötülüklerin köküdür" alıntı gerçekten de geçerli değil. Kodu (veya sistemi) daha karmaşık hale getiren optimizasyonlardan bahsediyordu - eğer 2. maddeyi kabul ederseniz, bu kodu daha az karmaşık hale getiren bir optimizasyondur !
4. Kongre:
Dışarıdaki diğer Java programcılarının% 99'una farklı stilistik seçimler yaparsanız, 2 dezavantajı vardır:
- Başkalarının kodunu okumayı zorlaştırırsın. Örneklerin / öğreticilerin / vb. Yerlerin% 99'u ilkelleri kullanacaktır. Ne zaman bir tane okursanız, alışkın olduğunuz tarzda nasıl görüneceğini düşünmek için ekstra bilişsel ek yükünüz olur.
- Diğer insanlar kodunuzu okumayı zorlaştırır. Yığın Taşması ile ilgili soru sorduğunuzda, “neden ilkel kullanmıyorsunuz?” Sorusunu sorarak cevapları / yorumları gözden geçirmelisiniz. Bana inanmıyorsan, insanların parantez yerleştirme gibi şeylerle ilgili savaşlarına bak, bu da üretilen kodu etkilemiyor!
Normalde bazı puanları listelerdim ama dürüst olmak gerekirse, burada kongreye katılmamak için hiçbir iyi sebep düşünemiyorum!