2

这是一个简单的风格问题。在 Ruby 代码中声明访问控制的首选方法是什么?

示例 A:


#!/usr/bin/env ruby

class MyClass
    def method1    # this is public by default
        #...
    end
    protected      # subsequent methods will be protected
        def method2
            #...
        end
    private        # subsequent methods will be private
        def method3
            #...
        end
    public         # subsequent methods will be public
        def method4
            #...
        end
end

或示例 B:


#!/usr/bin/env ruby

class MyClass
    def method1
        #...
    end
    def method2
        #...
    end
    def method3
        #...
    end
    def method4
        #...
    end
    public :method1, :method4
    protected :method2
    private :method3
end

从语法上讲,我喜欢示例 B。A 在/方法public之后声明的方法之间引入了歧义,尽管我认为没有理由不应该在将其指定为之后调用。protectedprivatemethod1public

然而,这不是我喜欢的。行业定义的规范是什么?

4

2 回答 2

2

我见过的唯一使用第二种方法的地方是在 Ruby 书籍中,并且只是作为“你也可以这样做”的示例。

而且你很少看到像第一种方法那样使用“公共”,因为它是默认的,人们只是在任何受保护/私有声明之前定义他们所有的公共方法。

于 2010-09-20T11:49:11.707 回答
1

我认为这真的取决于你的编码风格。如果您阅读 Bob 叔叔的“清洁代码”,您(我个人很喜欢),我们鼓励您编写彼此紧密调用的方法或函数。在这种情况下,使用示例 B 中的方法的可见性是有意义的:

class Foo
  def method1
    method2
  end

  def method2
    ..
  end
  private :method2
end

实际上,Uncle Bob 很好地将方法放在一起,因为这可以防止滚动代码。

于 2010-09-20T13:30:41.240 回答