Множественное ветвление в алгоритме, кто виноват и что делать?

топ 100 блогов ru_php10.01.2010 Иногда страница (имею ввиду php-скрипт или контроллер) может выполнять разные действия, например страница mysite.com/gallery может использоваться в режиме просмотра (view), редактирования (edit), добавления (add) и удаления (delete). Варианты адресов тогда
site.com/gallery
site.com/gallery/edit (либо site.com/gallery?action=edit, не суть)
site.com/gallery/add
site.com/gallery/delete


Теперь к главному - обработка действия выполняется свитчем

switch ($action){
  case 'edit': ... break;
  case 'add': ... break;
  case 'delete': ... break;
  case 'view': default: ...
}

Иногда бывает нужно дополнительное деление по поддействиям:
site.com/gallery/add/category
site.com/gallery/add/item

switch ($action){
  ...
  case 'add':
    switch ($what){
      case 'category': { ... } break;
      case 'item': { ... } break;
    }
  break;
  ...
}

аналогично для edit и delete

switch ($action){
  case 'edit':
    switch ($what){
      case 'category': /* много строк */ break;
      case 'item': /* много строк */ break;
    }
  break;
  case 'add':
    switch ($what){
      case 'category': /* много строк */ break;
      case 'item': /* много строк */ break;
    }
  break;
  case 'delete':
    switch ($what){
      case 'category': /* много строк */ break;
      case 'item': /* много строк */ break;
    }
  break;
  case 'view': default: ...
}

Как вы уже понимаете, действия и поддействия могут добавляться и дальше, и однажы мы обнаружим что написали свитч длиной пятьсот и больше строк. Запутаться сложновато, но и листать его туда-сюда - то ещё удовольствие.

Что же делать, как же быть? можно /* много строк */ вынести в функции, но в них будут уже другие пространства имён, что создаст сложности. Можно настроить редактор, чтобы он сворачивал case ... break, уменьшая занятое место на экране (как это сделать в эклипсе, кто подскажет?). Ещё варианты?

Оставить комментарий

Предыдущие записи блогера :
Архив записей в блогах:
В своих заметках о путешествиях мы обязательно пишем и о том, где мы жили. Черногория не станет исключением, а потому сегодня рассказ о нашем жилье в Которе и Тивате Гостиницу в Которе выбирали в Старом городе и пересмотрев множество предложений остановились на Hotel Rendez Vous 3* ...
...
Минутка деколонизации. Когда в начале октября я писал о заявке на подлинное, а не притворное разрушение эльфийского колониального строя, сделанную Этой Страной, некоторые в комментах хмыкали. Дескать, слишком громко звучит. Однако такие процессы, какие запустила наша СВО, ...
Удивительные люди. Как отрицательно заряженные электроны. Притягиваются, сталкиваются, рождают нечто, а потом их отбрасывает друг от друга с той же силой, с которой притягивало.Мои родители не то чтобы ненавидят друг друга, но настолько друг от ...
Геннадий Тимченко сам сказал об этом в передаче "Вести в субботу с Сергеем Брилевым". «Мы предполагали, что это может случиться, поэтому в определенном смысле мы позаботились заранее о своих активах. Так что все находится сейчас в России, надежно сохранено в наших российских банках». ...