Как лучше реализовать код? Доброго времени суток. Я учусь грамотно использовать ООП для гибкости кода, возможности расширения в будущем. Подскажите пожалуйста: Мой скрипт на основе шаблонов периодически создаёт задачи с помощью метода Tasks::createTask(). У каждой задачи задачи есть подзадачи. Они могут создаваться как сразу при создании основной задачи, так и постепенно добавляться через некоторое время. В каком месте кода их лучше создавать? 1 Вариант: Создавать подзадачи в методе создания основных задачclass Subtasks { public function createSubtasks() { // ... } } class Tasks { public function createTask($params = array()) { // Код создания основной задачи... $newTaskId = '...';
// Создание подзадачи if ($params['create_subtasks']) { $Subtasks = new Subtasks; $Subtasks->createSubtasks($newTaskId); }
} } 2 Вариант Создавать подзадачи в контроллере Например так:$Tasks = new Tasks; $Subtasks = new Subtasks; $Tasks->createTask(); $Subtasks->createSubtasks($Tasks->getNewTaskId()); Второй вариант с одной стороны мне кажется более гибким и меньше связывает Tasks и Subtasks, с другой стороны это не очень удобно и если что-то поменяется, то придётся везде переписывать вызов метода создания подзадач. Как бы сделали вы? Спасибо
Оба варианта имеют свои преимущества и недостатки. Первый вариант, где создание подзадач происходит в методе создания основной задачи, может быть удобным, если создание подзадач всегда происходит сразу при создании основной задачи и они всегда создаются вместе. Однако, это может привести к нарушению принципа единственной ответственности класса, если задача Tasks будет заниматься не только созданием основной задачи, но и добавлением подзадач.
Второй вариант, где создание подзадач отдается контроллеру, может быть более гибким и разделением ответственности между классами. Однако, он может усложнить код и возможно потребует переписывания вызовов методов при изменении логики.
Лучше всего выбрать вариант в зависимости от конкретных требований вашего приложения. Если подзадачи всегда создаются сразу при создании основной задачи и вам необходимо, чтобы этот процесс был неделимым, то первый вариант может быть предпочтительнее. Если же вам важно разделение ответственности и гибкость в добавлении подзадач после создания основной задачи, то второй вариант может быть более подходящим.
В любом случае, важно следовать принципам SOLID и стараться создавать код, который будет легко читаемым, поддерживаемым и расширяемым.
Оба варианта имеют свои преимущества и недостатки. Первый вариант, где создание подзадач происходит в методе создания основной задачи, может быть удобным, если создание подзадач всегда происходит сразу при создании основной задачи и они всегда создаются вместе. Однако, это может привести к нарушению принципа единственной ответственности класса, если задача Tasks будет заниматься не только созданием основной задачи, но и добавлением подзадач.
Второй вариант, где создание подзадач отдается контроллеру, может быть более гибким и разделением ответственности между классами. Однако, он может усложнить код и возможно потребует переписывания вызовов методов при изменении логики.
Лучше всего выбрать вариант в зависимости от конкретных требований вашего приложения. Если подзадачи всегда создаются сразу при создании основной задачи и вам необходимо, чтобы этот процесс был неделимым, то первый вариант может быть предпочтительнее. Если же вам важно разделение ответственности и гибкость в добавлении подзадач после создания основной задачи, то второй вариант может быть более подходящим.
В любом случае, важно следовать принципам SOLID и стараться создавать код, который будет легко читаемым, поддерживаемым и расширяемым.