代码之家  ›  专栏  ›  技术社区  ›  Xero

提高Rails中对象名的可读性

  •  2
  • Xero  · 技术社区  · 6 年前

    语境

    假定命名对象的约定 栏杆 就是这样:

    /app/models/foo/bar.rb => class Foo::Bar
    

    如果我有文件夹结构:

    /app/models/foo/bar/object1.rb
    /app/models/foo/bar/object2.rb
    /app/models/foo/main.rb
    

    要从我的主机调用这些对象,我必须执行以下操作:

    class Foo::Main
    
      def some_method
        Foo::Bar::Object1.new
        Foo::Bar::Object2.new
      end
    
    end
    

    这个工作很好。但我的问题是:

    问题

    有什么方法可以改善 对象名称的可读性 ?

    在我的 Foo::Main 在同一命名空间中 Foo 有没有办法叫他们( Foo::Bar::Object1.new Foo::Bar::Object2.new )用一个较短的名字?

    我想给他们起个名字 Bar::Object1.new Bar::Object2.new ,在此上下文中(或 Object1.new Object2.new )

    预期

    class Foo::Main
    
      def some_method
        Bar::Object1.new
        Bar::Object2.new
      end
    
    end
    

    这段代码是我所期望的,但它不起作用。

    2 回复  |  直到 6 年前
        1
  •  6
  •   mrzasa    6 年前

    如果要使用顶部模块,则需要使用嵌套而不使用 A::B 速记:

    module Foo
      class Main
    
        def some_method
          Bar::Object1.new
          Bar::Object2.new
        end
      end
    end
    

    资料来源:

        2
  •  0
  •   Sebastian Scholl    6 年前

    如果您有兴趣了解更多关于语法的最佳实践,我建议您使用类似rubocop的工具: https://github.com/rubocop-hq/rubocop

    不管你最终是否将它与你的工作流程分离,这都无关紧要。也就是说,它在识别最佳实践方面非常有帮助,可以提高代码的可维护性/可读性,并且在团队工作时有很大帮助。