Bedenken ist ein einfaches, aber starkes Konzept. Es existiert für die Wiederverwendbarkeit von Code. Grundsätzlich besteht die Idee darin, allgemeine und/oder kontextspezifische Codeabschnitte zu extrahieren, um die Modelle zu bereinigen und zu vermeiden, dass sie zu fett und unkontrollierbar werden.
Ich möchte explizit angeben, dass Sie Serviceobjekte verwenden sollten, um Funktionalität bereitzustellen, die nicht das spezifische Objekt betrifft. ZB hat eine Organisation viele Benutzer. Jetzt muss der Administrator der Organisation eine CSV aller Benutzer für diese Organisation exportieren. Dieser Code kann in das Organisationsmodell eingefügt werden, da er jedoch nicht in der Verantwortung des Organisationsobjekts liegt, sollte dieser Code in einer Klasse platziert werden, in der Sie einfach das Organisationsobjekt übergeben und die CSV aller Benutzer zurückgibt.
class Services::GenerateCsv
def self.get_users org
#add logic the fetch users for the org and generate the CSV and return the CSV data
end
end
Wenn Sie CSV-Generierung benötigen, können Sie diese Logik in der oben genannten Klasse platzieren. Dieser Ansatz hält das Objekt (in diesem Fall das Organisationsmodell) von dem Code fern, der nicht in seiner Verantwortung liegt. Ein allgemeiner Grundsatz, dem ich folge, ist: Wenn der Code das Self-Objekt verändert, verschiebe den Code auf ein Service-Objekt.
Hinweis: Ihre Frage bezog sich auf Bedenken, aber ich dachte darüber nach, einige zusätzliche Dinge hinzuzufügen, um die Codebasis sauber und überschaubar zu halten, da sie anderen Programmierern helfen könnte. Dieser obige Ansatz ist umstritten.
toll, danke! Also sollte ich sie verlassen? Ich wollte sie löschen, wenn sie nicht notwendig sind. –
Ja, du solltest sie behalten, damit sie da sind, wenn du sie brauchst. Es wird auch sicherstellen, dass die Ordner von Ihrem Versionskontrollsystem bemerkt werden. – Josh
Soll ich sie in mein '.gitignore' legen? Ich würde lieber keine leeren Dateien speichern. – tbodt