Иногда я сталкиваюсь с кодом, подобным следующему примеру (что именно делает эта функция, выходит за рамки этого вопроса):
function doSomething(value) {
if (check1(value)) {
return -1;
}
else if (check2(value)) {
return value;
}
else {
return false;
}
}
Как вы можете видеть, if
, else if
и else
утверждения используются в сочетании с return
заявлением. Это кажется довольно интуитивным для случайного наблюдателя, но я думаю, что было бы более элегантно (с точки зрения разработчика программного обеспечения) отбросить else
-s и упростить код следующим образом:
function doSomething(value) {
if (check1(value)) {
return -1;
}
if (check2(value)) {
return value;
}
return false;
}
Это имеет смысл, так как все, что следует за return
оператором (в той же области видимости), никогда не будет выполнено, делая приведенный выше код семантически равным первому примеру.
Что из перечисленного больше соответствует хорошей практике кодирования? Есть ли недостатки любого метода в отношении читабельности кода?
Изменить: Дубликат предложение было сделано с этим вопросом, предоставленным в качестве ссылки. Я полагаю, что мой вопрос затрагивает другую тему, поскольку я не прошу избегать дублирующих утверждений, как представлено в другом вопросе. Оба вопроса стремятся уменьшить количество повторений, хотя и немного по-разному.
-1
является числом, false
является логическим значением и value
здесь не указывается, поэтому это может быть объект любого типа.
value
это целое число. Если это может быть что-то, то это еще хуже.
else
меньше проблема, тем больше проблема в том, что вы, очевидно, возвращаете два типа данных из одной функции, что делает API функции непредсказуемым.