Kullanıcı bir pozitif tamsayı (doğal bir sayı) girene kadar bir kullanıcı giriş için soran bir işlev yazdım. Birisi fonksiyonumda istisnalar atmamalı ve yakalamamam gerektiğini ve fonksiyonumun arayanının onları idare etmesine izin vermesi gerektiğini söyledi.
Diğer geliştiricilerin bu konuda ne düşündüğünü merak ediyorum. Ayrıca muhtemelen işlevdeki istisnaları kötüye kullanıyorum. Java kodu:
private static int sideInput()
{
int side = 0;
String input;
Scanner scanner = new Scanner(System.in);
do {
System.out.print("Side length: ");
input = scanner.nextLine();
try {
side = Integer.parseInt(input);
if (side <= 0) {
// probably a misuse of exceptions
throw new NumberFormatException();
}
}
catch (NumberFormatException numFormExc) {
System.out.println("Invalid input. Enter a natural number.");
}
} while (side <= 0);
return side;
}
İki şeyle ilgileniyorum:
- Arayanın istisnalar hakkında endişelenmesine izin vermeli miyim? İşlevin amacı, kullanıcı doğal bir sayı girene kadar kullanıcıyı sektirmesidir. İşlevin noktası kötü mü? Kullanıcı arabirimi (kullanıcı doğru girdi olmadan döngüden çıkamıyorum) hakkında değil, istisnalar işlenen döngüsel girdi hakkında konuşmuyorum.
- Fırlatma ifadesinin (bu durumda) istisnaların kötüye kullanılması olduğunu söyleyebilir misiniz? Numaranın geçerliliğini kontrol etmek için kolayca bir bayrak oluşturabilir ve bu bayrağa göre uyarı mesajı verebilirim. Ama bu koda daha fazla satır eklemek istiyorum ve ben olduğu gibi mükemmel okunabilir düşünüyorum.
Mesele şu ki ayrı bir giriş fonksiyonu yazıyorum. Kullanıcı birden çok kez bir sayı girmek zorundaysa, girdi için tüm biçimlendirme istisnalarını ve sınırlamalarını işleyen ayrı bir işlev oluştururum.