@Ventus

Нормально ли изменять параметр функции внутри функции без объявления переменной?

Возьмем, к примеру, функцию, которая возвращает число, умноженное на 10. Если число отрицательное, то оно автоматически меняется на единицу:

const example = (num) => {
    if (num < 0) {
        num = 1;

    return 10 * num;
};

Нормально ли это с точки зрения написания хорошего кода? Правильно ли я понимаю, что лучше сделать вот так:

const example = (num) => {
    let a = num;

    if (a < 0) {
        a = 1;

    return 10 * a;
};
  • Вопрос задан
  • 372 просмотра
Пригласить эксперта
Ответы на вопрос 5
@EvgeniiR
https://github.com/EvgeniiR
Нормально ли изменять параметр функции внутри функции ...

Не очень.

В вашем примере:
const myMyltilpy = (num) => {
    return (num < 0) ? 1 : num * 10;
}


https://developer.mozilla.org/en-US/docs/Web/JavaS...
Ответ написан
@namee
Сдаётся мне, что в этом случае нужно смотреть с колокольни читаемости кода.
В первом примере понятно, что ограничение прописано.
Ну и дальше по тексту входящая переменная.

Во втором же случае нужно в памяти держать преобразования. А потом забудится / замылится и в один прекрасный момент и вторая переменная всплывёт в коде.

Там где может быть человеческий фактор - он обязательно случится.
Ответ написан
@f_ban
В случае, если вы так работаете со значением, прередваемым по значению (то есть не объект), то особо можно не волноваться.
Но все же ваш второй вариант реализации будет лучше. Как минимум, функция становится абсолютно чистой. а это хорошо со многих точек зрения.
Или же вариант из первого ответа - короче и лаконичнее
Ответ написан
Robur
@Robur
Знаю больше чем это необходимо
В целом нормально, аргументы функции - такие же локальные переменные, как и явно объявленные.
Другой вопрос что вы можете привыкнуть, ненароком отхватить там объект и поменять что-то там где вообще не надо.
Поэтому лучше в более- менее сложном коде так не делать, но в таких примитивных примерах как ваши - введение дополнительной переменной никакой пользы не приносит, только читаемость ухудшает. В них не надо.
Ответ написан
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
с точки зрения нормального кода не нужно объявлять новых переменных.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы