Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Множество условий в скрипте. (https://javascript.ru/forum/misc/72499-mnozhestvo-uslovijj-v-skripte.html)

Sigizmund2012 02.02.2018 13:12

Множество условий в скрипте.
 
Здравствуйте. Пишу скрипт, в котором реально много условий. Делать 100500 if или городить монструозные switch-и уже сил нет, масштабируется это всё отвратительно. Может есть какой-то паттерн или библиотека, о которых я не знаю, позволяющие упростить задачу? Пилю на webpack + Babel, так что современный js welcome.

Alexandroppolus 02.02.2018 13:30

тут зависит от того, какие условия.
можно так:
var actionsMap = {
  action1: function() { ... },
  action2: function() { ... },
  ...
};

var actionName = '...';

actionsMap[actionName](); // вместо switch по разным значениям actionName


для более общего случая можно массив:
var actionsArr = [
  {
    test: function() { ... },
    action: function() { ... }
  },
  ...
];
пробегаем по нему в цикле, для каждого пункта, где выполняется test, вызываем action


такие структуры удобно поддерживать, изменять, пополнять

ksa 02.02.2018 13:51

Цитата:

Сообщение от Sigizmund2012
Пишу скрипт, в котором реально много условий.

А каких именно мы можем только догадываться...


Dilettante_Pro 02.02.2018 16:25

Sigizmund2012,
Цитата:

Сообщение от Sigizmund2012
в котором реально много условий

Такого не может быть - могут быть правила, которые поддаются нормальной алгоритмизации

j0hnik 02.02.2018 17:40

что за условия?

Sigizmund2012 02.02.2018 18:44

Цитата:

Сообщение от j0hnik
что за условия?

Обычные условные операторы, if-else, switch. Просто их много уже накопилось, скрипт стал большой и неповоротливый, неудобно дальше разрабатывать и поддерживать, надо его как-то причесать и упорядочить. Что мог, вынес в отдельные функции. Мне нужен общий совет, выкладывать свой говнокод сюда я не буду.

Aetae 02.02.2018 21:59

Ну в зависимости от условий код же ветвится? Пускайте каждую ветвь отдельно, и будет норм.)


Часовой пояс GMT +3, время: 23:48.