У меня есть тонны таких методов:
def lab1
setup
business_processing
rescue Exception => e
handle_error('custom error message for lab1', e)
end
def lab2
setup
business_processing
rescue Exception => e
handle_error('custom errror message for lab2', e)
end
Я преобразовал приведенный выше код во что-то вроде этого:
def lab1
with_setup_and_error_handling do
@error_message = 'error in lab1'
business_processing
end
end
def with_setup_and_error_handling(&block)
setup
block.call
rescue Exception => e
handle_error(@error_message, e)
end
Новый код работает, но он заставляет error_message
быть переменной экземпляра. Есть ли лучший способ его рефакторинга?
Когда кто-то смотрит на измененный код, он видит переменную экземпляра, но не ясно, где она используется, поэтому я не доволен ею.