I’m not sure where to put some methods.
Let’s say I want to send an email.
Which of the following options should I choose:
email = new Email("title", "adress", "body");
email.send();
or
email = new Email("title", "adress", "body");
Postman.send(email);
Because how can an email send itself? And isn’t it better to have a central object that handles all emails because then he can regulate things like sending all emails at a specific time, sort mails, remove mails etc.
Also if I want to delete an user, how should I do:
user.delete();
or
administrator.delete(user);
Please share your thoughts about how to know where to put the methods.
I disagree with Arseny. An email can send itself, and that’s exactly where the code should live. That’s what methods are: actions that can be performed on the object.
However, note that your approaches are not mutually incompatible. An email’s
sendaction could easily just contain the code to add itself to the Postman’s send queue, and if you do want to regulate the actions, that might be a good idea. But that’s no reason not to have asendmethod for the email class.