Een slechte gewoonte van mij was dat ik soms objecten maak (en goedkeur) met exceptions van de constructor.
vb
Maar dit is niet een supergoed ontwerp, want je regelt de program flow mbv exception. Je kan ook eerst gaan checken voor je hebt object gaat maken.
Maar je loopt nu 2 keer te checken en naarmate je meer en lastigere objecten als argument mee geeft dan wordt het er niet sneller op. Wat is hier de juiste aanpak voor? Of moet je in dit geval een uitzondering maken?
vb
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| class Persoon
{
private int leeftijd;
public Persoon(int leeftijd){
if(leeftijd<0)
throw new InvalidArgumentException("leeftijd kan niet kleiner zijn dan 0");
this.leeftijd = leeftijd;
}
}
Persoon persoon = null
try{
persoon = new Persoon(leeftijdField.getLeeftijd());
}catch(IllegalArgumentException e){
...bericht..
...return ofzo.
} |
Maar dit is niet een supergoed ontwerp, want je regelt de program flow mbv exception. Je kan ook eerst gaan checken voor je hebt object gaat maken.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| class Persoon
{
public static boolean checkLeeftijd(int leeftijd){
return leeftijd>=0;
}
private int leeftijd;
public Persoon(int leeftijd){
if(leeftijd<0)
throw new InvalidArgumentException("leeftijd kan niet kleiner zijn dan 0");
this.leeftijd = leeftijd;
}
}
int leeftijd = leeftijdField.getLeeftijd();
Persoon persoon = null;
if(!Persoon.checkLeeftijd(leeftijd))
... bericht
return ofzo..
else{
persoon = new Persoon(leeftijd);
} |
Maar je loopt nu 2 keer te checken en naarmate je meer en lastigere objecten als argument mee geeft dan wordt het er niet sneller op. Wat is hier de juiste aanpak voor? Of moet je in dit geval een uitzondering maken?