2012-03-09 60 views
1

如何刪除對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! 

回答

1

的是一個良好的開發部分就是知道什麼時候,不要試圖減少重複。從技術上講,有多個property陳述是一種重複的形式,但它是如此無害以至於不值得花時間去除。根據這裏暗示的替代方法來考慮時,尤其如此,因爲我認爲這種方法令人困惑並且難以閱讀。

最終,這是一個不必要的習慣用法,它會使您的代碼難以維護。聲明應該保留,我建議你不要採用不同的方法。

如果你絕對必須出於某種原因做這個,你可以使用:

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

我完全同意。這是出於好奇心,我試圖將reddit應用程序減少到儘可能少的行數。我現在不知道如何使用'* args'。謝謝! – Dru 2012-03-09 22:25:43