Какие из этих рельсов 3.1 проверки лучше? - PullRequest
2 голосов
/ 31 октября 2011

(A) Вот так:

  validates :network_id,              :numericality => true

  validates :direct_url,              :presence => true

  validates :domain_name,             :presence => true

  validates :merchant_id,             :numericality => true

  validates :is_paid_merchant,        :presence => true

  validates :is_top_merchant,         :presence => true

  validates :last_months_revenue,     :presence => true,
                                      :numericality => true

  validates :name,                    :presence => true,
                                      :length => { :maximum => 50 }

  validates :primary_category_id,     :numericality => true

  validates :url,                     :presence => true

  validates :url_tag,                 :presence => true,
                                      :length => { :maximum => 45 }

-OR-

(B) вот так:

  validates :network_id,
            :merchant_id,
            :last_months_revenue,
            :primary_category_id,      :numericality => true

  validates :direct_url,
            :domain_name,
            :is_paid_merchant,
            :is_top_merchant,
            :last_months_revenue,
            :name,
            :url,
            :url_tag,                 :presence => true

  validates :name,                    :length => { :maximum => 50 }

  validates :url_tag,                 :length => { :maximum => 45 }

В первом случае каждое поле имеетпредложение own validates, а во втором оно основано на проверяемых объектах (поля, которые имеют несколько проверок, появляются несколько раз).Первый случай также в алфавитном порядке, так что немного более полезно перейти прямо к определенному полю.

-OR-

(C) Я просто слишком анально сохраняю, как мой кодчитает и смотрит?

Ответы [ 3 ]

2 голосов
/ 31 октября 2011

Лично я бы предпочел первый стиль. Потому что я бы поблагодарил вас за необходимость прочитать 30 строк кода, чтобы узнать, какие проверки установлены в одном поле.

2 голосов
/ 31 октября 2011

Я думаю, что первый стиль лучше по следующей причине:

Скорее всего, у вас есть конкретное имя поля «в уме», когда вы работаете над проверкой - или редактируете - или добавляете новую проверку.для этого поля.Таким образом, система, которая перечисляет каждое поле, а затем все проверки для каждого, хорошо работает для чтения.

Другие проверки групп стилей вместе приводят к тому, что поле видится в одном месте, но затем приходится искать и прокручиватьи другие проверки для этого поля - и есть большая вероятность, что вы не увидите или не узнаете о других проверках для этого поля, которые могут быть «за кадром» и, следовательно, пропущены.

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

Еще один пример того, почему B) плохой ... Представьте себе:

  validates :network_id,
            :merchant_id,
            :last_months_revenue,
            :primary_category_id,      :numericality => true

  validates :network_id,
            :direct_url,
            :domain_name,
            :merchant_id,
            :url,
            :url_tag,                 :presence => true

  validates :network_id              :uniqueness => true

Посмотрите, как все поля повторяютсянад местом?Теперь представьте себе удаление network_id - да!Теперь представьте, что вы добавляете еще одно поле _id, которое требует численности, уникальности и присутствия - yuch!

Еще один пример - можно подумать (хорошо, я давно это сделал), я сгруппирую все необходимые поля, а затемпоместите хороший комментарий для них, а затем все уникальные из них, с меткой заголовка комментария для всех них и т. д. Таким образом, существует «стандарт» для разработчиков.Проблема с таким подходом (кроме предыдущих комментариев) заключается в том, что это «локальный» стандарт, который должны понимать другие программисты (как текущие, так и будущие), а затем ... надеюсь ... следовать.Как бы я их ни любил, личные стандарты, подобные этому, часто вносят свой вклад в технический долг, если не будут четко продуманы.

1 голос
/ 31 октября 2011

Для меня лучше это А. Одно объявление для одного атрибута не избыточно, а ясно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...