Mam pytanie na dwie części
Najlepsze praktyki
- Mam algorytm, który wykonuje pewne operacje na strukturze danych przy użyciu interfejsu publicznego
- Obecnie jest to moduł z wieloma metodami statycznymi, wszystkie prywatne, z wyjątkiem jednej metody interfejsu publicznego.
- Istnieje jedna zmienna instancji, która musi być współużytkowana przez wszystkie metody.
Oto opcje, które widzę, które są najlepsze ?:
- Moduł z metodami statycznymi („moduł” w języku ruby)
- Zajęcia z metodami statycznymi
- Moduł Mixin do włączenia do struktury danych
- Zrefaktoryzuj część algorytmu, która modyfikuje tę strukturę danych (bardzo małą) i stwórz z niej mixin, który wywołuje statyczne metody modułu algorytmu
Część techniczna
Czy istnieje sposób na utworzenie prywatnej metody modułu ?
module Thing
def self.pub; puts "Public method"; end
private
def self.priv; puts "Private method"; end
end
Wydaje się, private
że tam nie ma żadnego efektu , nadal mogę dzwonić Thing.priv
bez problemu.
private
wpływa tylko na metody instancji, nie na metody klas. użyj private_class_method
zamiast tego:module Thing; def self.pub; end; private_class_method :pub; end