Just a little code quiz, can you spot the design problem with this API? Bonus points for come up with a plausible reason as to what the programmer was distracted with whilst working on this.
/** Load an integer from system properties, validating in a range */
public static int getProperty(String name, int defValue, int min, int max){
try {
int value = Integer.getInteger(name, defValue).intValue();
return Math.max(min, Math.min(max, value));
}
catch(NumberFormatException e) {
return defValue;
}
}
/** Load an long from system properties, validating in a range */
public static long getProperty(String name, long min, long max, long defValue){
try {
long value = Long.getLong(name, defValue).longValue();
return Math.max(min, Math.min(max, value));
}
catch(NumberFormatException e) {
return defValue;
}
}
