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

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

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

Предыдущие записи блогера :
Архив записей в блогах:
kouzdra предлагает такую альтернативу реактивным лайнерам для трансокеанских ...
Редактор четвертой игры турнира «Балтийский берег» сезона 2014/15 – Михаил Карпук (Минск). Редактор благодарит за помощь в подготовке пакета Анастасию Балмакову, Александру Ермалович, Александра Марцинкевича, Дарью Соловей (все – Минск), Евгения Поникарова (Санкт-Петербург), Игоря Шпунгина ...
У человека астма, и любая лёгкая простуда с насморком переходит в тяжёлый, месяцами не проходящий кашель. Стоит быстро пройтись, особенно в гору - гарантирован сильный приступ кашля с затруднённым дыханием. К врачам ходит регулярно, прописанные лекарства принимает, но без особого эффекта. ...
Я опять с вопросами. В мае (дочке будет 5 мес) предстоит большая поездка, а опыта ноль. Боюсь! 1) Перелеты. Летим из Осло в Крым, пересадка в Москве. Первый самолет ночной, прилетает в Шереметьево в 5 утра. Второй, до Симферополя, примерно в 10-11 утра. Как провести 5 часов с младенцем в ...
В этот раз в марафоне #наулицезима  дал pryanik тема-слово "бюджет". Хочу в этом разрезе поговорить о поездках - бюджетных и не особо бюджетных. Дело в том, что мы только что мы вернулись из поездки - были в Новгороде и ещё немного - в Санкт-Петербурге.  В связи с ...