как новый Rubyist, я сталкиваюсь с постоянной проблемой, когда речь заходит о структурировании моих моделей.
Когда метод слишком длинный:
- Я пытаюсь сделать рефакторинг с лучшим / более коротким синтаксисом
- Я пытаюсь разделить некоторые части на «под методы»
ПРОБЛЕМА: я не знаю, как правильно разделить метод + какой инструмент (частный метод, модули и т. д. c.)
Например:
Мне нужно запустить Foo.main_class_method
Моя модель выглядит так:
class Foo < Applicationrecord
def self.main_class_method
[...] # way too long method with nasty iterations
end
end
Я пытаюсь разделить свой метод, чтобы улучшить восприимчивость. Это становится:
class Foo < Applicationrecord
def self.main_class_method
[...] # fewer code
self.first_splitted_class_method
self.second_splitted_class_method
end
private
def self.first_splitted_class_method
[...] # some code
end
def self.second_splitted_class_method
[...] # some code
end
end
Результат: это работает, но я упал, как будто это не правильный способ сделать это + У меня есть побочные эффекты
- ожидается: splitted_methods недоступны, кроме как внутри
main_class_method
- получил: Я могу вызвать
Foo.first_splitted_class_method
, так как методы класса "игнорируют" Private. splitted_class_methods в Private
не являются частными
Вопрос: Это приемлемый способ разделения main_class_method
или это полное неправильное использование частного метода?