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.priv
mà không gặp sự cố.
private
chỉ ả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_method
thay thế:module Thing; def self.pub; end; private_class_method :pub; end