Сколько классов слишком много? Rails STI

Я работаю над очень большим приложением Rails. Изначально мы не использовали много наследования, но у нас есть некоторый опыт работы с консультантом, и мы хотим провести рефакторинг некоторых наших моделей.

В нашем приложении часто используется следующий шаблон:

class Project < ActiveRecord::Base
  has_many :graph_settings
end

class GraphType < ActiveRecord::Base
  has_many :graph_settings
  #graph type specific settings (units, labels, etc) stored in DB and very infrequently updated.
end

class GraphSetting < ActiveRecord::Base
  belongs_to :graph_type
  belongs_to :project
  # Project implementation of graph type specific settings (y_min, y_max) also stored in db.
end

Это также приводит к множеству условных выражений в представлениях, помощниках и в самой модели GraphSetting. Ничего из этого нехорошо.

Простой рефакторинг, при котором мы избавляемся от GraphType в пользу использования структуры, более похожей на эту:

class Graph < ActiveRecord::Base
  belongs_to :project
  # Generic methods and settings
end

class SpecificGraph < Graph
  # Default methods and settings hard coded
  # Project implementation specific details stored in db.
end

Теперь это имеет смысл для меня, упрощает тестирование, удаляет условные выражения и облегчает последующую интернационализацию . Однако у нас есть только от 15 до 30 графиков.

У нас есть очень похожая модель (слишком сложная для использования в качестве примера) с примерно 100 различными «типами» и потенциально может удвоить это количество. У всех у них будут отношения и методы, которые они унаследовали, некоторым нужно будет переопределить больше методов, чем другим. Кажется, что это идеальное применение, но так много всего кажется много.

Многим ли 200 занятий по ИППП? Есть ли еще одна закономерность, на которую мы должны обратить внимание?

Спасибо за любую мудрость, и я отвечу на любые вопросы.

5
задан Chris Nicola 23 June 2014 в 23:11
поделиться