Я недавно работал над упрощением метода Ruby, который я не писал.Это часть унаследованного проекта, написанного коллегой.В целом, мы проделали довольно хорошую работу, не накапливая долг кода, но есть несколько методов, которые требуют любви.
Метод, который я упрощал, изначально представлял собой массу вложенных блоков 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
операторов, предпочтительно до одного?Если возможно, я бы предпочел неявно вернуться, если смогу.