Идея не писать дублирующий код — хороша. Но вот с реализацией через json-конфиг хочется поспорить.
Не прозрачно получилось. Когда придет новый разработчик, надо ему объяснить, что для реализации стандартных КРУД'ов надо в json'чик добавить несколько строк конфига. А если забыть это сделать, то большинство без зазрений совести сделают artisan make:controller, и в общем-то будут правы.
И да, если в вашем случае потребуется некий специфический метод для одной сущности, то всё равно придется добавлять новый контроллер.
На мой взгляд, реализовать некий КРУД-сервис, который будет реализовывать нужные методы, а в основных контроллерах по сущностям инжектить этот сервис, и в методах контроллера вызывать 1 метод сервиса. Такое решение хотя бы у новых людей не будет вызывать оторопь.
Ой, про единую точку возврата уже накидали, но хочется ещё подискутировать не эту тему.
Читать вот это
function foo(baz) {
if (baz < 0) {
return 0;
}
// ...
// do any for result
return result;
}
Много проще чем это,
function foo(baz) {
if (baz < 0) {
result = 0;
} else {
// ...
// do any for result
}
return result;
}
особенно если проверок может быть много
function foo(baz) {
if (baz < 0) {
result = 0;
} else if(baz > 100 && baz <= 1000) {
result = do_f1();
} else if (baz > 1000 && baz <= 10000) {
result = do_f2();
} else if (baz > 10000 && baz <= 100000) {
result = do_f3();
} else{
result = do_f4();
}
return result;
}
Эта гирлянда вообще вызывает ассоциации с ктулху.
А уж если как-то так получается, что иерархия if/else'ов уходит вглубь на пару уровней, то совсем тушите свет, потому что третьему уровню контекст теряется: кто и зачем туда попал?
На сколько я знаю, ЕМНИП, если режут справа внизу, то аппендицит удаляют при любом раскладе, даже если ничего не нашли. Так делают из соображений, чтобы в следующий раз, если в первый раз не вырезали и если реально будет аппендицит, то шрам на пузе не смутил врачей.
Не прозрачно получилось. Когда придет новый разработчик, надо ему объяснить, что для реализации стандартных КРУД'ов надо в json'чик добавить несколько строк конфига. А если забыть это сделать, то большинство без зазрений совести сделают artisan make:controller, и в общем-то будут правы.
И да, если в вашем случае потребуется некий специфический метод для одной сущности, то всё равно придется добавлять новый контроллер.
На мой взгляд, реализовать некий КРУД-сервис, который будет реализовывать нужные методы, а в основных контроллерах по сущностям инжектить этот сервис, и в методах контроллера вызывать 1 метод сервиса. Такое решение хотя бы у новых людей не будет вызывать оторопь.
Вот так мне нравится больше
Читать вот это
Много проще чем это,
особенно если проверок может быть много
Эта гирлянда вообще вызывает ассоциации с ктулху.
А уж если как-то так получается, что иерархия if/else'ов уходит вглубь на пару уровней, то совсем тушите свет, потому что третьему уровню контекст теряется: кто и зачем туда попал?
В SCSS я использовал такие варианты:
В html всё понятно, что придется печатать, хотя не встречал проблем с этим.