Nerf писал(а):Ну, вы описываете другую проблему. Сложный код должен упрощаться. Проблема кроется в том, что "скопипасчен уже в 4 местах", проблема в том, кто скопипастил код трижды, не вынеся общий код.
нет, это максимально упрощенный код, дальше некуда. Проблема в том, что не вынесено в сервис изначально. Каждый следующий разработчик при задаче "сделать как там" копипастил код, вместо подсмотреть какой сервис дергается и дернуть его. Просто не должно быть логики в контроллерах - все должно быть реюзабельно.
Nerf писал(а):Вы предлагает с ходу писать универсальное решение, на которое "уйдет очень мало времени"? Его не надо будет рефакторить в будущем? Вам аналогично придется уделять время на аналитику и т.п. На преждевременную оптимизацию похоже.
мне надо получить данные по определенным критериям - что тут может быть универсального? я пишу это, но выделяю в сервис, тратя время на 5 строчек, которые обязательно надо написать в сервисе - имя класса, метода, неймспейса - остальное остается ровно таким же, если бы было захардкожено в контроллере.
Nerf писал(а):Вы на этом форуме достаточно долго, сколько вопросов вы видели от новичков, которые не обладают такими навыками?)
навыками создания нового класса? они просто не знают про сервисы, поскольку в yii сообществе например вы в этой ветке пропагандируете тяп-ляп. Вместо: - создай сервис. - а что это? - а это класс из 5 строчек. - можно пример. - вот. - ох, круто.
Nerf писал(а):Лучше сразу в дебри отправлять?.. Да и вынос в класс с копипастой не гарантирует, что человек, 3ды скопипастивший код, не сделает новый класс и т.п.
не может человек, целенаправленно создавший сервис, сказать, что сервисы это дебри, потому что сервис - это простейший концепт ооп-архитектуры - это класс, инкапсулирующий некую общую логику. То, что yii-разработчик привык писать в модели, нужно выделять в сервисы с оверхедом только на создание класса. Создай уже свой первый сервис.
Защиты от дурака быть не может - если тебе говорят, сделай как там, ты идешь туда, видишь сервис, который ровно это делает, но сервис копипастишь, то тут ничего не поделаешь. Этот человек и модель User скопипастит, чтобы добавить новый функционал. Мы не будем рассматривать примеры дебилии.