Когда разработчики Java принимают проектные решения, они обычно следуют «лучшим практикам» в отношении поддержки кода, а что нет. Поэтому я был удивлен, обнаружив следующую ситуацию в исходном коде класса String (комментарии мои, а не их, очевидно).
/* Makes sense, use the appropriate class for this */
public static String valueOf(int i) {
return Integer.toString(i, 10);
}
/* Makes sense, use the appropriate class for this too */
public static String valueOf(float f) {
return Float.toString(f);
}
/* Magic values "true" and "false"? Seriously? */
public static String valueOf(boolean b) {
return b ? "true" : "false";
}
Это заставило меня подумать, что по какой-то причине, возможно, он не определен в булевом классе или что булевские ссылки ссылаются на String. Опять же, я удивлен, обнаружив, что этот метод дублируется.
/* Identical code to String */
public static String toString(boolean b) {
return b ? "true" : "false";
}
Теперь я понимаю, что маловероятно, что каноническое представление логических значений может измениться. Но сколько раз люди, которые присылают нам (как разработчики), присылают нам требования, говорят: «О, это не изменится - оно в камне!» и все же, через некоторое время они возвращаются и говорят: «Нам нужны эти изменения, и они нужны нам сейчас!» и положи трубку, прежде чем ты сможешь сказать им, что они сказали, что это никогда не изменится.
Есть ли какая-то особая причина, по которой они это сделали? Я знаю, что это предложение звучит как убийство или что-то в этом роде, но все же. Я удивлен только этим?