Рубиновые абстрагирующие модельные высказывания - PullRequest
1 голос
/ 10 марта 2012

Как мне удалить несколько ссылок на оператор property в моем классе Link? Я сделал нечто подобное с оператором require для драгоценных камней с

require 'sinatra'
require 'data_mapper'
require 'shotgun'

становится ..

%w{sinatra data_mapper shotgun}.each { |lib| require lib}

      %w{sinatra data_mapper shotgun}.each { |lib| require lib}
        DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/mini.db") 
        class Link
          include DataMapper::Resource
          property :id, Serial
          property :title, Text, :required => true
          property :url, String, :required => true
          property :points, Integer, :default => 0
        end
        DataMapper.auto_upgrade!

1 Ответ

1 голос
/ 10 марта 2012

Быть хорошим разработчиком - это знать, когда не пытаться уменьшить дублирование. Технически говоря, наличие нескольких property операторов является формой дублирования, но это настолько безобидно, что не стоит тратить время на удаление. Это особенно верно, когда рассматривается в свете альтернативного подхода, который здесь подразумевается, который я нахожу запутанным и трудным для чтения.

В конечном итоге это ненужная идиома, которая усложнит поддержку вашего кода. property заявления следует оставить в покое, и я советую вам не придерживаться другого подхода.

Если вам по какой-то причине необходимо сделать это, вы можете использовать:

[
  [:id, Serial],
  [:title, Text, :required => true],
  [:url, String, :required => true],
  [:points, Integer, :default => 0]
].each { |args| property *args }
...