Это зависит от того, как шаблон используется. Для int
, Вы в порядке.
, Но , если t
плавающая точка IEEE754 double
, тип с набором значений к NaN
, ни t < 1
, ни t >= 1
true
и таким образом, программное управление достигает конца if
блок! Это заставляет функцию возвращаться без явного значения; поведение которого не определено.
(В более общем случае, где T
перегрузки <
и >=
операторы таким способом как относительно не покрывают все возможности, программное управление достигнет конца if
блок без явного return
.)
мораль истории здесь должна выбрать, какое ответвление должно быть значением по умолчанию и сделать тем else
случай.
Просто, потому что код является правильным, который не означает, что это не может быть лучше. Корректное выполнение первое шаг по качеству, не последнее.
if (t < 1) {
return 0;
} else if (t >= 1){
return 1;
}
Вышеупомянутое "корректно" для любого типа данных t
, чем имеет нормальное поведение для <
и >=
. Но это:
if (t < 1) {
return 0;
}
return 1;
легче видеть контролем, что каждый случай покрыт и избегает второго ненужного сравнения в целом (который некоторые компиляторы, возможно, не оптимизировали). Код не только прочитан компиляторами, но людьми, включая Вас 10 лет с этого времени. Дайте людям передохнуть и запишите проще для их понимания также.
Как отмечено, некоторые специальные числа могут быть и <
и >=
, таким образом, Ваш рецензент просто прав.
вопрос: что заставило Вас хотеть кодировать его как это во-первых? Почему Вы даже считаете жизнь создания настолько трудной для себя и других (люди, которые должны поддержать Ваш код)? Просто то, что Вы достаточно умны, чтобы вывести, что <
и >=
должен покрыть все случаи, не означает, что необходимо сделать код более сложным, чем необходимый. То, что идет для физики, идет для кода также: сделайте вещи максимально простыми, но не более простые (я полагаю, что Einstein сказал это).
Думают об этом. Чего Вы пытаетесь достигнуть? Должно быть что-то вроде этого: 'Возвратитесь 0, если вход - меньше чем 1, возвратитесь 1 иначе'. То, что Вы сделали, добавляет аналитика путем высказывания..., о, но это означает, что я возвращаюсь 1, если t является большим или равным 1. Этот вид бесполезных 'x подразумевает, что y' требует дополнительный, думают работа от имени специалиста по обслуживанию. Если бы Вы думаете, что это - хорошая вещь, я советовал бы, чтобы сделать несколько лет обслуживания кода сами.
, Если бы это был мой обзор, я сделал бы другое замечание. Если Вы используете, 'если' оператор, то можно в основном сделать что-либо, которое Вы хотите во всех ответвлениях. Но в этом случае, Вы 'ничего' не делаете. Все, что Вы хотите сделать, возвратиться 0 или 1 в зависимости от ли t< 1 или нет. В тех случаях я думаю'?': оператор очень лучше и более читаем, чем if
оператор. Таким образом:
return t<1 ? 0 : 1;
я знаю ?:
, оператор запрещается в некоторых компаниях, и я нахожу что ужасная вещь сделать. ?:
обычно соответствия намного лучше со спецификациями, и это может сделать код настолько легче читать (если используется с осторожностью)...