Bir Yineleyici yazmanın bir parçası olarak kendimi aşağıdaki kod parçasını yazarken buldum (hata sıyırma)
public T next() {
try {
return next;
} finally {
next = fetcher.fetchNext(next);
}
}
okumaktan biraz daha kolay bulmak
public T next() {
T tmp = next;
next = fetcher.fetchNext(next);
return tmp;
}
Okunabilirlik farkının çok zor olamayacağı basit bir örnek olduğunu biliyorum, ancak istisnaların olmadığı durumlarda böyle bir durumda try-nihayet kullanmanın kötü olup olmadığı konusunda genel görüşe ilgi duyuyorum. kodu basitleştirdiğinde aslında tercih edilirse.
Eğer kötüyse: neden? Stil, performans, tuzaklar, ...?
Sonuç Tüm cevaplarınız için teşekkür ederiz! Sanırım sonuç (en azından benim için), ilk örneğin, ortak bir model olsaydı daha okunaklı olabileceği, ancak olmadığı anlamına gelir. Bu nedenle, amacı dışında bir yapı kullanarak ortaya çıkan karışıklık, muhtemelen gizlenmiş istisna akışı ile birlikte, herhangi bir basitleştirmeden daha ağır basacaktır.
Iterator
için bir çeşit ön taramaya ihtiyaç duyduğunuz yerde uygulama yapmakla ilgilidir hasNext()
. Kendin dene.
Iterator
, değeri almanız gerektiğidir hasNext()
('bunu almak oldukça sık olup olmadığını öğrenmek için tek yoldur) ve next()
OP'nin yaptığı gibi geri döndürmek .
finally
blok kullanıyorum.