【问题标题】:How to structure a large Ruby application?如何构建大型 Rub​​y 应用程序?
【发布时间】:2009-07-15 00:29:11
【问题描述】:

我正在考虑用 Ruby 编写一个(大型)桌面应用程序(实际上是一个游戏,想想使用 Gtk+ 作为 GUI 的 Angband 或 Nethack)。我来自 C#/.NET 背景,所以我对如何构建事物有点迷茫。

在 C# 中,我会创建许多命名空间,例如 Application.Core、Application.Gui 等)。不需要 Gui 的应用程序部分不会使用 using 语句引用它。据我了解,在 Ruby 中,require 语句基本上是进行文本插入,以避免重复代码。我担心的是,通过使用 require 语句,每个文件/类都可以访问其他所有内容,因为 require 语句的顺序。

我读过一些使用模块作为命名空间的 ruby​​ 代码。它是如何工作的,它有什么帮助?

不知道我在这里得到什么... 有人对如何构建大型 Rub​​y 应用程序有任何好的指导吗?一些使用 Ruby 的非平凡(和非 Rails)应用程序怎么样?

【问题讨论】:

    标签: ruby desktop-application


    【解决方案1】:

    在构建代码方面,Ruby 与任何其他语言没有什么不同。做感觉对的事,它可能会奏效。我不完全确定您预计会出现什么问题。您是否担心名称冲突?

    模块是获取伪命名空间的好方法,例如。

    module Core
      class Blah
        self.def method
        end
      end
    end
    
    Core::Blah.method
    

    【讨论】:

    • 当然,这在语义上是行不通的,因为 'blah' 需要保持不变,并且您可以像这样访问它 - Core::Blah.method - 如果“method”是一个类方法。不过,+1
    【解决方案2】:

    您的一些问题并不是 Ruby 特有的,它只是与循环依赖有关。 Core 依赖 Gui 还是 Gui 依赖 Core?还是两者兼有?

    解决其中一些问题的一个好方法是使用一个非常小的“运行器”组件,它依赖于核心、数据访问组件、gui 等,并将它们联系在一起。

    【讨论】:

    • 不,它没有。我已经有了一个跑步者,但它基本上做了一堆要求并创建 GUI 并运行它。
    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 2013-07-28
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    相关资源
    最近更新 更多