Я іноді натрапляю на код, подібний до наступного прикладу (те, що саме ця функція робить, виходить за рамки цього питання):
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 функції непередбачуваним.