【问题标题】:Ruby Abstracting Model StatementsRuby 抽象模型语句
【发布时间】:2012-03-10 06:12:39
【问题描述】:

如何在Link 类中删除对property 语句的多个引用?我对带有

的宝石的 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!

【问题讨论】:

    标签: ruby sinatra datamapper


    【解决方案1】:

    成为一名优秀的开发人员的一部分是知道何时不尝试减少重复。从技术上讲,拥有多个property 语句是一种重复形式,但它是如此无害,不值得您花时间删除。考虑到此处暗示的替代方法时尤其如此,我觉得这种方法令人困惑且难以阅读。

    最终,这是一个不必要的习惯用法,会使您的代码更难维护。 property 声明应单独使用,我建议您不要采用不同的方法。

    如果出于某种原因您绝对必须这样做,您可以使用:

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

    【讨论】:

    • 我完全同意。这是出于好奇和我尝试将 reddit 应用程序减少到尽可能少的行数。我以前不知道如何使用*args。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 2017-10-07
    • 2012-02-15
    • 2018-06-16
    相关资源
    最近更新 更多