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

топ 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, уменьшая занятое место на экране (как это сделать в эклипсе, кто подскажет?). Ещё варианты?

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

Предыдущие записи блогера :
Архив записей в блогах:
Не знаю, что получится из этой затеи. Но на всякий случай выкладываю: "25-26 сентября стартует проект "Семейное путешествие. Всей семьей в музей!", объединивший 15 московских музеев для создания увлекательных и познавательных маршрутов для зорких и ...
забанили в сообществе поравалитиков за невинную фразу "ты чтоли тут мудератор?" событие не имело бы ни малейшего резонанса, если бы не главные действующие лица, знакомьтесь, тупопиздень с зудом матки mechanic_bird мадама сия прославилась эпическим выпадом в адрес крабе, ...
Недавно наткнулся на сайте одной библиотеки на выложенные в свободном доступе сканах черносотенного сатирического журнала "Виттова пляска", издававшегося в годы первой россиской революции. За острык шутки, а также как бы сейчас сказали за "разжигание межнациональной розни", журнал в ...
Сделал узи шеи. На одной атрерии бляха-муха 40%. Печалька. Нужно думать как растворить. Протокольная медицина предлагает статины, а после 75% шунтирование. Но это не убирание бляхи-мухи, а расширение артерии путём вставки колец. Даже странно, за столько лет развития медицины так ничего ...
Глобальное потепление многие объясняют исключительно антропогенным фактором. Вклад которого заведомо не мал, но вряд ли определяющ. Похоже, однако, модой на антропогенный фактор заразилось и объяснение глобальных похолоданий.       Так, малый ледниковый период (МЛП) 16-19 ...