【问题标题】:How to use underscores instead of camelCase in RubyMotion?如何在 RubyMotion 中使用下划线而不是 camelCase?
【发布时间】:2014-08-14 18:20:24
【问题描述】:

我发现到目前为止,在使用 RubyMotion 时,在某些情况下使用驼峰式大小写会降低可读性和重用性。虽然我一开始就理解 Cocoa 对保持这个约定很有帮助,但在我看来,按照标准 Ruby 约定使用下划线单词分隔会更有效率和更明智。有没有办法已经做到这一点,或者是否有另一种方法来解决这个问题?

ActiveSupport 支持这种转换。我从BubbleWrap 看到了一些具有camelizeunderscore 方法的东西,但显然它并不是真正针对这个特定用例的。

似乎这不是 RubyMotion 人员自己提供的东西,也许我们可以编写一个包装器方法,以便有一种方法可以触发预编译传递以进行此转换?

【问题讨论】:

    标签: ruby rubymotion


    【解决方案1】:

    我已经编写了可以做这种事情的变形器,并且自动使用它们让我非常紧张。如果您真的想使用变形器,请查看motion-support gem。它包含camelizeunderscore 和一堆其他热心的东西。您会注意到这些变形器允许在默认设置不起作用的情况下进行覆盖。这就是问题案例。哪里不行。

    变形器基于启发式工作。大多数好的启发式方法涵盖了大部分已知案例;存在例外。这是真正会杀死你的例外。 (注意。我制作并添加到动作支持的那些是基于英语语法规则的。你可以想象本地化会有多困难!)

    如果您认为 RubyMotion 应该自动执行此转换,我认为许多程序员会发现这违反直觉,因为他们会输入:tableView(view, numberOfRowsInSection:section) 并以某种方式搞砸了。错误信息可能是:

    table_view:number_of_rows_in_section: *** You made some mistake ***
    

    这不会映射到所写的代码。

    我认为您不希望您的构建工具在未经许可的情况下重命名您的对象和/或方法,RubyMotion 怎么知道哪些要重命名,哪些不可以?

    【讨论】:

      【解决方案2】:

      有一个宝石:https://github.com/jamonholmgren/viper

      很高兴您可以选择哪种情况。但是,我会考虑该项目的未来。例如,假设您的项目成功了,并且您雇用了更多的 Objective-C 开发人员,他们将与您一起从事这个项目。如果他们熟悉大小写,他们将更容易将其移植到 Objective-C(或 Swift)。 一些不太了解 Cocoa 的初级开发人员将很难在谷歌上搜索正确的答案。

      我最终把cocoaMethod(calls)my_own_ruby_method(calls) 混淆了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-01
        • 1970-01-01
        • 2011-02-26
        • 2015-05-22
        • 1970-01-01
        相关资源
        最近更新 更多