SORU
5 Mart 2012, PAZARTESİ


Ne'In Guava noktası'in İsteğe bağlı sınıf

Son zamanlarda bu konuda okumak ve insanların bu sınıf, ama hemen hemen tüm durumlarda, null kullanmaya çalıştı olurdu - eğer daha sezgisel kullanarak gördüm. Biri Optional null yapamadığın şeyleri ya da daha temiz bir şekilde elde etmek istiyorsunuz somut bir örnek verebilir? Tek şey belki onu kullanmak için Maps bunu kabul etmiyoruz null anahtarlar, ama bu yapılabilir bir yan "eşleme" null değeri. Herkes daha fazla ikna edici bir argüman bana verebilir mi? Teşekkür ederim.

CEVAP
5 Mart 2012, PAZARTESİ


Guava ekip üyesi burada.

Muhtemelen tek ve en büyük dezavantajı null herhangi bir bağlamda ifade etmeli ne kadar belli değil: açıklayıcı bir adı yok. Değil her zaman açık olduğunu null anlamı "hiçbir değeri bu parametre" -- yahu, dönüş değeri, bazen demek "hata", ya da "başarı" (!!), ya da sadece "doğru cevap " hiçbir şey". Optional sık değişken null yaptığınızda aslında ama her zaman değil kavramdır. Değil, kendi sınıf etmeniz önerilir, Optional benzer ama farklı bir adlandırma düzeni ile değil, gerçekten demek istediğin açık.

Ama Optional en büyük avantajı okunabilirlik değil derdim: avantajı aptal geçirmez-lik. Aktif olarak aktif Optional açmak zorunda olduğundan, eğer tüm programı derlemek isterseniz devamsızlık dava hakkında düşünüyorum, ve bu durumda adres için zorlar. Null rahatsız edici derecede kolay basit şeyleri unutmak için yapar, ve FindBugs yardımcı olur ama, sorun yaklaşık olarak adresleri sanmıyorum. Bu olabilir ya da "hediye." olmayabilir değerleri döndüren olduğunda özellikle geçerlidir Siz (ve diğerleri) çok daha büyük olasılıkla unutmayın other.method(a, b) diye dönüş null değeri daha iyisin muhtemel unutmayın a olabilir null when you're uygulama other.method. Optional dönen nesnenin kendileri çözmek zorundalar beri arayanlar bu durumda unutmak imkansız hale getirir.

Bu nedenlerden dolayı, mutlaka yöntem bağımsız değişkenleri yöntemlerinizi, ama bir dönüş türü olarak Optional kullanmanızı öneririz.

(Bu tamamen cribbed, yol, tartışma here.)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CasinoRoyaleMovie's channel

    CasinoRoyale

    1 AĞUSTOS 2006
  • Damien Hayes

    Damien Hayes

    11 Mart 2008
  • Distractify

    Distractify

    1 Aralık 2011