Как лучше реализовать код? Доброго времени суток. Я учусь грамотно использовать ООП для гибкости кода, возможности расширения в будущем. Подскажите пожалуйста:
Мой скрипт на основе шаблонов периодически создаёт задачи с помощью метода 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, с другой стороны это не очень удобно и если что-то поменяется, то придётся везде переписывать вызов метода создания подзадач.
Как бы сделали вы? Спасибо

21 Авг 2019 в 07:09
161 +1
1
Ответы
1

Оба варианта имеют свои преимущества и недостатки. Первый вариант, где создание подзадач происходит в методе создания основной задачи, может быть удобным, если создание подзадач всегда происходит сразу при создании основной задачи и они всегда создаются вместе. Однако, это может привести к нарушению принципа единственной ответственности класса, если задача Tasks будет заниматься не только созданием основной задачи, но и добавлением подзадач.

Второй вариант, где создание подзадач отдается контроллеру, может быть более гибким и разделением ответственности между классами. Однако, он может усложнить код и возможно потребует переписывания вызовов методов при изменении логики.

Лучше всего выбрать вариант в зависимости от конкретных требований вашего приложения. Если подзадачи всегда создаются сразу при создании основной задачи и вам необходимо, чтобы этот процесс был неделимым, то первый вариант может быть предпочтительнее. Если же вам важно разделение ответственности и гибкость в добавлении подзадач после создания основной задачи, то второй вариант может быть более подходящим.

В любом случае, важно следовать принципам SOLID и стараться создавать код, который будет легко читаемым, поддерживаемым и расширяемым.

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 706 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир