Hab noch was:
Delphi-Quellcode:
Function ValueRange (Value, Min, Max : Integer) : TRangeResult;
Begin
if Value<Min then
Result := rrTooSmall
else if Value>Max then
Result := rrTooBig
else
Result = rrJustRight
End;
Begin
RangeOfA := ValueRange (A,1,4);
RangeOfB := ValueRange (B,1,9);
case RangeOfA of
rrTooSmall:
case RangeOfB Of
rrTooSmall :
Anweisung1
rrJustRight:
Anweisung2
rrTooBig:
Anweisung3;
end;
rrJustRight :
case RangeOfB Of
rrTooSmall:
???
rrJustRight:
Anweisung4
rrTooBig:
Anweisung5;
end;
rrTooBig :
case RangeOfB Of
rrTooSmall:
Anweisung6;
rrJustRight:
???
rrTooBig:
???;
end;
end;
Das entspricht einer Entscheidungsmatrix.
Aber man sieht auch hier: Etwas Ordnung geschaffen und die Lücken werden sichtbar. Es sind nicht alle Fälle abgedeckt...
Weiterer Vorteil: Die Bereichsprüfung ist nur an einer Stelle (DRY) und somit leicht änderbar.
Wie man an die Sache herangeht, hängt natürlich mit dem konkreten Problem zusammen.