Ich habe ein Benutzermodell, die Abstimmungsmethoden haben. Ich möchte Proxy-Methoden für die Abstimmung schreiben.Was ist Rails Way? (Lesbarkeit vs Trocknen)
Dies ist lesbare Weise:
def vote_up item
return false unless can? :vote, item
vote item, :up
end
def vote_down item
return false unless can? :vote, item
vote item, :down
end
Und das ist DRY Art und Weise:
%w(up down).each do |vtype|
define_method "vote_#{vtype}" do |item|
return false unless can? :vote, item
vote item, vtype.to_sym
end
end
Welche ist besser und warum?
persönlich, wenn man bedenkt Sie 2 Methoden nur hier haben, und es ist unwahrscheinlich, dass Sie immer mehr hinzufügen würde (vote_sideways? Vote_diagonally?) Ich würde mit dem lesbaren Art und Weise einfach gehen. Wenn Sie möglicherweise viele, viele mehr haben könnten, würde ich mit dem DRY-Weg gehen (weil es leicht erweiterbar ist) mit einem lesbaren Kommentar, der anderen Entwicklern (oder sich selbst später!) Erklärt. – MrDanA
Stimmen Sie mit @MrDanA --- eine andere Frage: Möchten Sie dies in mehr Klassen als nur dieses "Element" verwenden? –
atm MrDanA's Antwort ist besser. ty! – enRai