Próbuję ogarnąć obiektowość. Załóżmy że mam jakąś publiczną metodę, na przykład Project.rename
Project.rename ma do wykonania kilka operacji, które są w metodach prywatnych klasy Project
self.change_file_name self.change_folder_name self.copy_images
itd.
Jak mam to napisać? def self.rename(new_name) Project.change_file_name(new_name) Project.change_folder_name(new_name) Project.copy_images(new_name) end
Mam wrażenie, że to zupełnie nie tak ma być ale nie wiem co dalej. Za jaką książkę powinienem się zabrać?
Czemu robisz wszystko statycznie ? Nie lepiej np pr = Project.find(1) pr.rename('new_name')
a w klasie class Project .... def rename update_file_name update_folder_name copy_images end end
Hej,
nie wiem czy zrozumiałem problem, ale z tego co widzę Twój obiekt ma stan, więc motodę statyczną możesz użyć jaki ‘programista-friendly’ interfejs, cały obiekt powinien posiadać stan w postaci ‘new_name’. Co do prywatności metod to zastanowiłbym się nad tym, Twoje nie wyglądają jak by miały być prywatne.
[IMHO] (chodź nie do końca mogłem zrozumieć naturę pytania)
class Project
def initialize(new_name = "")
@new_name = new_name
end
def update_file_name; end
def sef.rename(new_name)
obj = self.new(new_name)
obj.update_file_name
.
.
.
end
end