У меня вопрос из двух частей
Лучшая практика
- У меня есть алгоритм, который выполняет некоторую операцию над структурой данных с использованием открытого интерфейса
- В настоящее время это модуль с множеством статических методов, все частные, за исключением одного метода открытого интерфейса.
- Существует одна переменная экземпляра, которая должна быть разделена между всеми методами.
Это варианты, которые я вижу, что лучше?:
- Модуль со статическими ('module' in ruby) методами
- Класс со статическими методами
- Модуль Mixin для включения в структуру данных
- Рефакторинг из части алгоритма, который изменяет эту структуру данных (очень мал) и делает это mixin, который вызывает статические методы модуля алгоритма
Техническая часть
Есть ли способ сделать частный метод модуля?
module Thing
def self.pub; puts "Public method"; end
private
def self.priv; puts "Private method"; end
end
private
там, кажется, не имеет эффекта, я все равно могу вызвать Thing.priv
без проблем.