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

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

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

Предыдущие записи блогера :
Архив записей в блогах:
Об этом можно спорить до бесконечности. Кто-то считает, что готовить должна женщина и только женщина, а мужчина лишь поглощать приготовленное. Некоторые им возразят и скажут, что обязанность - приготовление пищи, должна осуществляться по очереди, и это будет по-справедливости! Или не ...
Алексей С. Железнов © Если пост понравился, можно нажать "Нравится" и Проголосовать ...
Эти железные коробки умеют ездить, плавать и летать, они имеют разную длину и высоту, бывают открытыми и закрытыми, платформами и бочками, они начали свою службу в армии, но сегодня они перевозят абсолютно все вещи, которые нас с вами окружают. Сегодня я расскажу вам неизвестную ...
— Падение в 2015 действительно есть и заметное. Но ведь и цены на нефть упали более чем в 2 раза, то есть, доходы от остального упали почти с такой же скоростью, чуть медленнее, чем нефтегазовые. — Доля в бюджете остаётся выше 40%. До этого, на самом пике она была 50% или чуть выше — кар ...
Это совсем не те, кого трахает начальство. Это, напротив, те, кого начальство не трахает. Как в старом колхозном анекдоте: твой бык очень удивляет мою черную корову... Ну вот допустим... Работает допустим, в офисе дева не самой первой свежести. И пусть будет у нее красивое имя, допустим, ...