Как избежать большого количества (от 20 до 30) встроенных операторов «если» в Ruby? - PullRequest
1 голос
/ 26 августа 2009

У меня есть массивный скрипт с около 20 встроенными операторами if (Yay!), Который используется для анализа файла данных. И в некотором смысле это правильно, потому что сценарий не должен продолжать работать, если любая из этих оценок не удалась.

Но моя интуиция говорит, что есть более элегантный способ сделать то же самое. Я знаком с плагином statemachine для рельсов, но он кажется излишним ( кажется излишним).

Есть ли шанс, что есть немного более изящный способ уменьшить количество встроенных 'ifs' либо с помощью рабочего процесса, либо каким-либо другим способом?

Ответы [ 5 ]

8 голосов
/ 26 августа 2009

отменить условия операторов if и оставить конкретную функцию (если вы можете). Таким образом, вы получаете много if, если они находятся позади друг друга вместо вложенных

2 голосов
/ 26 августа 2009

В основном это зависит от кода, но я могу предложить 2 способа:

  1. case .. when .. then .. структура.
  2. Эффективно, используя send или eval методы.
1 голос
/ 26 августа 2009

Один из подходов состоит в создании хэша или массива, в котором содержимое представляет собой Procs, каждый из которых инкапсулирует заданное условие. Затем вы можете просмотреть циклы и проверить свои данные по каждому.

0 голосов
/ 26 августа 2009

Используйте хамл: P

(поэтому вам не нужно заканчивать теги if ..)

0 голосов
/ 26 августа 2009

Просто проведите рефакторинг кода и разделите части условных разделов на различные функции. Это не уменьшит вложенные, если глубины, но сделает его более читабельным.

В противном случае сказать очень мало, поскольку это очень общий вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...