【问题标题】:Design patterns设计模式
【发布时间】:2011-10-20 08:21:27
【问题描述】:

曾经有人对我说,在视图中渲染控制器动作是一个糟糕的设计决策。你们能推荐一些资源,我可以获得更多关于什么是好/坏设计以及为什么的信息、建议和示例。通过这种方式,我可以学习如何做出更好的设计决策并识别未来可能出现的问题。

【问题讨论】:

  • 了解 OO 设计 - 从 O'Reilly Media 发布的 Head First Object-Oriented Analysis and Design 开始的好地方

标签: ruby-on-rails ruby-on-rails-3 model-view-controller design-patterns


【解决方案1】:

这本书是寻求良好 RoR 实践的非常好的资源

Rails AntiPatterns:Ruby on Rails 重构最佳实践,作者:Chad Pytel 和 Tammer Saleh

这本书在改进我的 Rails 编程实践方面确实帮助了我很多。

【讨论】:

    【解决方案2】:

    在视图中渲染控制器动作并不是一个糟糕的设计,它只是没有意义。您不渲染控制器操作,而是渲染视图。渲染=绘制。你会如何绘制一个动作?

    您可以直接在视图中或从控制器操作中渲染视图。两者都是非常常见且完全可以接受的做法。

    也许如果你解释了你的想法,那么你可能会得到答案,但我只能说是

    在您的视图中,链接和按钮到控制器操作和渲染语句渲染视图模板部分,这几乎是您想要做的所有事情。

    更新

    我突然想到您可能指的是类似于此的视图语法

    <%= render :action => "action2" %>
    

    这是非常具有误导性的,因为它会让您认为您正在拨打电话 2 而实际上并非如此。您正在渲染 action2 模板。这是您获得渲染模板而不是部分模板的唯一方法,这几乎完全没有必要,主要是因为您真的只想使用完整模板的一部分。

    如果 action2 渲染了一个名为 action_2_template.html.erb 的模板并且没有 action_2.html.erb 模板,那么即使你有一个 action2 操作,上面的代码也会给你一个找不到模板的错误

    【讨论】:

      【解决方案3】:

      RubyOnRails.org 为正确使用代码约定/标准提供了广泛的文档和教程来源。

      【讨论】:

        【解决方案4】:

        (我将假设您的意思是一般意义上的设计,而不是特定于 Rails。我还将假设您是一名专业的开发人员,试图提高他的技能。如果其中任何一个都不是这种情况,那么这个答案不会'不真正适用)

        代码设计是一个庞大的话题,而且(不幸的是)大多数好书都是用 Java 编写的。我将从“Head First Design Patterns”开始对该主题进行很好的介绍,然后转到“Clean Code”(应该是所有专业开发人员 IMO 的必读),了解日常开发中的启发式和技术,领域驱动设计关于构建大型系统的重要指南,最后是​​企业应用程序架构模式,为成功设计的大型系统中的常见模式奠定了良好的基础。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-08-27
          • 2012-04-14
          • 2011-11-30
          • 2010-12-28
          • 2016-10-10
          • 1970-01-01
          相关资源
          最近更新 更多