gpt4 book ai didi

ruby-on-rails - 得墨忒耳法则

转载 作者:行者123 更新时间:2023-12-02 22:31:03 26 4
gpt4 key购买 nike

我最近在 stackoverflow 上发布了一个问题,我做了一些事情来影响

@period_registration.period.event

但是,有人建议我执行以下操作:

def event
period.event
end

@period_registration.event

我的总体感觉是,这似乎有点过分。查看之前的帖子 How do I apply the Law of Demeter to this?显示了如果您对每个协会都这样做,这会变得多么严厉。

这种做法在 Rails 中有多常见?我的想法是,即使这在技术上是正确的做法,但如果它不是 Rails 文化的一部分,那么这样做似乎会让人们失望。而且,更重要的是,实际上降低了代码的可维护性,因为其他开发人员认为您在使用所有这些辅助方法是在浪费时间。

假设我想实现这一点,@period_registration.event.city,其中 city 是事件的一个属性,而不是一个单独的对象也违反了 LoD,或者我需要编写另一个方法以便我可以这样做:@period_registration.city

最佳答案

老实说,盲目遵守得墨忒耳法则的情况非常少见。尽管如此,对于协会来说,这是一种非常常见的模式,它有一条捷径可以让你免去大部分的辛苦工作:

class PeriodRegistration < ActiveRecord::Base
belongs_to :period
delegate :event, :to => :period
end

PeriodRegistration.new.event # calls PeriodRegistration.new.period.event

您可以在 Module#delegate 阅读更多相关信息文档。

冒着过度 self 推销的风险,我有一篇博文讨论了这个和其他尝试尊重得墨忒耳法则的方法,如果你喜欢的话。 Check it out如果您想了解更多信息。

关于ruby-on-rails - 得墨忒耳法则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12237431/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com