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後に宣言されたメソッド間にあいまいさをもたらしますが、それを being と指定した後に単に呼び出してはならない理由はわかりません。protectedprivatemethod1public

しかし、これは私が好きなことではありません。これについて業界で定義されている基準は何ですか?

4

2 に答える 2

2

2 番目の方法が使用されているのを私が見た唯一の場所は、Ruby の本であり、「これも実行できます」という例としてのみです。

また、最初のメソッドのように「パブリック」が使用されることはめったにありません。これがデフォルトであり、保護された/プライベートな宣言の前にすべてのパブリック メソッドを定義するだけだからです。

于 2010-09-20T11:49:11.707 に答える
1

それはあなたのコーディングスタイルに大きく依存すると思います。Uncle Bob の " Clean Code "を読んだ場合 (私が個人的に好きだったのですが)、互いに密接に呼び出されるメソッドまたは関数を作成することをお勧めします。この場合、例 B のようにメソッドの可視性を使用すると意味があります。

class Foo
  def method1
    method2
  end

  def method2
    ..
  end
  private :method2
end

ボブおじさんは、コード内でのスクロールを妨げるため、メソッドを互いに近づける良い例です。

于 2010-09-20T13:30:41.240 に答える