Существуют ли какие-то руководящие правила, когда имеет смысл определять статический класс, а не класс, для которого создается экземпляр?
Все еще озадачивается идиоматической инициализацией ruby по сравнению с определением статического класса.
Из того, что я нашел.
Статические классы кажутся очень эффективными.
- ruby - это и функциональный, и объектно-ориентированный язык.очень возможно написать оба стиля.функциональный стиль очень полезен для «функциональных» вещей.
- Я регулярно наблюдаю, как классы переходят от статических к экземплярам, а затем очень быстро раздуваются.«Теперь у нас есть все эти вещи ... почему бы не сделать больше ?!».я вижу, что экземпляры классов имеют естественную тенденцию к расширению обязанностей.
- я вижу, что когда класс переходит от статического к экземпляру, мы получаем меньше уверенности в модульном тестировании, поскольку во время выполнения вещи могут измениться в отношении памятивыделение / назначение (как, например, кто-то мог случайно попасть между созданием экземпляра и вызовом).
- Я считаю, что статические классы легче читать, потому что нам не нужно жонглировать потенциальными соображениями об изменении состояния.меньше мутаций = меньше сложности.
Для меня.Большие проблемы:
- Классы делают больше, чем одно.
- Нестабильность в шаблонах на больших старых базах кода ruby.
Чтобы решить эти две проблемы, я думаю, что статический подход (где это возможно), кажется, оказывает значительное давление на код, чтобы придерживаться принципов SOLID.
Static
Serializer.transform(fruit:)
Создан
Serializer.new(fruit:).transform
Что заставляет вас работать в рубине статично?