Я недавно работал над упрощением метода Ruby, который я не писал. Это часть старого проекта, который написал коллега. В общем, мы сделали довольно хорошую работу, не накапливая задолженность по коду, но есть несколько методов, которые нуждаются в некоторой любви.Как упростить этот метод в Ruby-ish?
Метод, который я упрощал, первоначально представлял собой массу вложенных блоков if-else. Я определил, что метод делает и упрощает метод, поэтому больше нет вложенных ifs.
Теперь я хочу упростить его еще больше, и, если возможно, я хочу исключить все, кроме одного заявления return
. Метод больше, чем это, но это общее понятие о том, что она выглядит как прямо сейчас:
def return_bool
return false unless condition1 && condition2
@var = SomeClass.getter(foo)
return true unless var.someProperty != 0
@stuff = @var.getsomething id
return false unless @stuff && somethingElse
data = JSON.parse(@stuff)
@stuff.each do |stuff|
return false if data[stuff['something']] != stuff['anotherSomething']
end
return true
end
Я думал об использовании raise
и обработки исключений для снижения return
заявления, но если, например, condition1
является ложным , это не исключительная ситуация, я ожидаю это в определенное время.
Как уменьшить количество операторов return
, предпочтительно до одного? Если возможно, я бы предпочел неявно вернуться, если смогу.
'raise' никогда не лучше, чем' return' – Nakilon
что на самом деле делает что-то полезное? –
@Greg Да. Как я уже упоминал, это более крупный метод, но я просто хотел опубликовать небольшой пример кода, чтобы вы поняли его суть. – Alex