Tôi có một câu hỏi hai phần
Thực hành tốt nhất
- Tôi có một thuật toán thực hiện một số thao tác trên cấu trúc dữ liệu bằng giao diện công khai
- Nó hiện là một mô-đun có nhiều phương thức tĩnh, tất cả đều riêng tư ngoại trừ một phương thức giao diện công khai.
- Có một biến thể hiện cần được chia sẻ giữa tất cả các phương thức.
Đây là những tùy chọn tôi có thể thấy, tùy chọn nào tốt nhất ?:
- Mô-đun với phương thức tĩnh ('mô-đun' trong ruby)
- Lớp với các phương thức tĩnh
- Mô-đun Mixin để đưa vào cấu trúc dữ liệu
- Cấu trúc lại một phần của thuật toán sửa đổi cấu trúc dữ liệu đó (rất nhỏ) và tạo ra một mixin gọi các phương thức tĩnh của mô-đun thuật toán
Phần kỹ thuật
Có cách nào để tạo một phương thức Module riêng không?
module Thing
  def self.pub; puts "Public method"; end
  private
  def self.priv; puts "Private method"; end
end
Trong privateđó dường như không có bất kỳ tác dụng nào , tôi vẫn có thể gọi Thing.privmà không gặp sự cố.
privatechỉ ảnh hưởng đến các phương thức thể hiện, không ảnh hưởng đến các phương thức lớp. sử dụng private_class_methodthay thế:module Thing; def self.pub; end; private_class_method :pub; end