Ruby 中將方法設為 private 有兩種主流寫法,功能等價但風格迥異。掌握兩者優缺點,能讓程式碼更符合團隊慣例與可讀性需求。
先定義方法,再用 private :method_name 宣告。優點是方法定義與可見性分離,適合將所有私有方法集中在類別底部管理。
class C
def public_method
private_method # 內部呼叫私有方法
end
def private_method
puts "我是私有方法"
end
private :private_method # 事後標記為私有
end
在 private 關鍵字之後定義的方法,自動成為私有方法。優點是視覺上明確區分公有/私有區塊,閱讀時一眼看出邊界。
class C
def public_method
private_method
end
private # 此行以下皆為私有
def private_method
puts "我是私有方法"
end
end
C.new.public_method # => "我是私有方法" (正常,內部呼叫)
# C.new.private_method # => NoMethodError: private method `private_method' called
private 也可接受多個 Symbol:private :foo, :barprotectedprivate def foo; end(寫法二的語法糖)選擇哪種風格取決於團隊偏好:大型類別推薦寫法二(區塊式),小型類別或偏好集中管理者可用寫法一。