Ciao a tutti, ho una domanda forse un po' banale, ma vorrei imparare a gestire meglio il design delle classi e dei metodi in generale, e questo è un mio vecchio dubbio 
Volevo sapere come gestire il tipo di dato ritornato da un metodo che deve al tempo stesso controllare la correttezza di un qualche input (o altro in generale) e informare riguardo al tipo di errore in caso di non correttezza.
Faccio un piccolo esempietto con due scenari "giocattolo" per meglio chiarire la questione :
1o scenario:
codice:
public class Test
{
private String error;
public String getError()
{
return error;
}
public boolean isInputCorrect(String input)
{
if(input.length()<3)
{
error="La parola inserita è troppo corta";
return false;
}
else if(input.length()>10)
{
error="La parola inserita è troppo lunga";
return false;
}
else if(input.contains("*"))
{
error="La parola inserita contiene un carattere proibito";
return false;
}
// ...... altri controlli ......
return true;
}
}
class TestMain
{
public static void main(String[] a)
{
Test t=new Test();
// .... acquisisco una stringa s in qualsiasi modo ora la definisco io ...
String s="Prova*";
if(t.isInputCorrect(s))System.out.println("La parola inserita e' corretta");
else System.out.println(t.getError());
}
}
2o scenario:
codice:
public class Test
{
public static final int CORRECT_WORD=0,SHORT_WORD=1,LONG_WORD=2,INVALID_CHARACTER=3;
public int getInputCorrectness(String input)
{
if(input.length()<3)return SHORT_WORD;
else if(input.length()>10)return LONG_WORD;
else if(input.contains("*"))return INVALID_CHARACTER;
// ...... altri controlli ......
return CORRECT_WORD;
}
}
class TestMain
{
public static void main(String[] a)
{
Test t=new Test();
// .... acquisisco una stringa s in qualsiasi modo ora la definisco io ...
String s="Prova*";
int type=t.getInputCorrectness(s);
if(type==Test.SHORT_WORD)System.out.println("La parola inserita è troppo corta");
else if(type==Test.LONG_WORD)System.out.println("La parola inserita è troppo lunga");
else if(type==Test.INVALID_CHARACTER)System.out.println("La parola inserita contiene un carattere proibito");
else System.out.println("La parola inserita e' corretta");
}
}
Quali tra queste due soluzioni potrebbe andare meglio (se non fanno entrambe schifo
) ? Ho pensato anche ad usare una classe specifica per l'errore, ma in un contesto così semplice mi pareva esagerato.
Avete qualche buon consiglio ? Grazie per l'attenzione 
[EDIT] : Mi sono dimenticato di un piccolo particolare: il tipo di errore nel mio problema varia tra alcuni errori "fissi" (riguarda la correttezza di una mossa eseguita) , quindi non è necessario ad esempio usare la stringa error per poter inserire in modo dinamico il carattere invalido inserito o altro.
Voglio solo avere diversi valori possibili 
Un altra soluzione che avevo pensato e forse potrebbe andare bene a livello logico è definire il metodo "di controllo" come :
codice:
public String getInputError(String input)
In questo caso ritornerei direttamente l'errore senza bisogno di memorizzarlo o di doverlo "modellare" attraverso delle costanti, mentre se l'input fosse corretto ritornerei null.
Può avere senso ?