@eugenedrvnk

Адаптировать один метод под разные данные, или делать несколько методов?

Изначально в проекте была необходимость для удаления лишь одного элемента.
Функция для этого выглядела так:
const deleteItem = (id) => {
  ...delete logic...
}


Потом появилась необходимость добавить возможность удаления нескольких элементов сразу и здесь можно сделать по разному.

Сделать в той же функции поддержку множества элементов, но тогда функцию прийдётся переименовывать под множественное число, и предыдущие места использования функции, где удалялся один элемент - так же изменять (делать что бы вместо прокидывания одного айдишника, прокидывался массив с одним айдишником).
const deleteItems = (ids) => {
  ids.forEach((id) => {
    {...delete logic...}
  })
}


Либо же оставить и функцию для удаления единичного элемента, и для множества.
Т.е. вынести логику удаления элемента куда-то ещё и будет как-то так

const handler = (id) => {...delete logic...}

const deleteItem = (id) => handler(id)

const deleteItems = (ids) => {
  ids.forEach((id) => handler(id)
}


Есть какие-то статьи может по правильному именованию переменных/функций? Т.к. в таких ситуациях довольно часто возникают спорные моменты и непонимание как сделать правильнее.
  • Вопрос задан
  • 42 просмотра
Пригласить эксперта
Ответы на вопрос 2
Aetae
@Aetae Куратор тега JavaScript
Тлен
const deleteItem = (...ids) => ids.forEach(handler);
и ничего менять не надо(только если возврат не использовался). :)
Вообще пофиг, item или itеms, по всякому бывает, важны соглашения.

Как именовать - смотри на интерфейсы стандартных объектов.
Ответ написан
Комментировать
@markak
Frontend developer
Можно сделать, используя метод filter.
const deleteItems = (ids) => {
  arr = arr.filter(item => !ids.some(id => id === item.id));
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
28 мар. 2024, в 21:17
5000 руб./за проект
28 мар. 2024, в 20:46
150000 руб./за проект
28 мар. 2024, в 20:37
50000 руб./за проект