скажем, у меня есть эта функция в Rails (на самом деле я: P - eval используется, потому что в будущем будет третий, четвертый или более номер_класса):
def all_profession_costs(class_number)
second = {'Wealth Ranger' => 1000, 'Wisdom Vacuum' => 1000, 'Life Leecher' => 1000, 'Dense Mass' => 1000}
costs = eval(class_number)
costs
end
Это кажетсятеперь будет работать нормально, но если я случайно использую 'firsta' для своего class_number, все это, скорее всего, рухнет, и, возможно, возникнет трудная ошибка.
Итак, теперь я думаю о двух вещах.Я определенно хочу как можно больше проверять вещи, но мне не нравится помещать такие вещи, как «поднимать RuntimeError», потому что это делает код намного уродливее.И заставляет его работать медленнее.Ну, я полагаю, что последнее терпимо, так как проверка означает лучший код.
Однако я не люблю безобразно.Я подумываю о создании отдельного модуля ExceptionHandling для того, чтобы выполнять подобные проверки.
В этом примере я бы хотел проверить, является ли class_number 'first', 'second' или 'third'.
Вместо чего-то вроде:
raise RuntimeError unless ['first', 'second', 'third'].include?(class_number.to_s)
Может быть, я мог бы написать простой модуль (работающий, вероятно, как декоратор Python), который сделает эту вещь лучше для чтения, что я думаю большекрасивый код, что-то вроде:
validates class_number, :inclusion => ['first', 'second', 'third']
Вроде как стандартный валидатор модели.
Что вы думаете об этом?Это хорошая идея или нет?Как бы вы относились к обработке ошибок в Rails?