Модульные шаблоны проектирования для не объектно-ориентированного кода? - PullRequest
1 голос
/ 19 января 2012

Я ищу статью или другие статьи о форме модульного дизайна.К сожалению, я не полностью прочитал статью до того, как потерял ее, так что это может быть немного неопределенно, но я постараюсь быть настолько конкретным, насколько это возможно, и объяснить, что я пытаюсь сделать, чтобы кто-то мог предложить другие статьи.

Данная статья (сообщение в блоге) была написана программистом, который на своем опыте сказал, что лучший способ разработки программного обеспечения - это своего рода модульный или компонентный подход, позволяющий выбирать разные компоненты для разных версий.из того же или аналогичного программного обеспечения.

Главное, что я помню, это диаграмма, показывающая разные программы на одной оси и разные компоненты на другой и показывающая, как можно выбирать конкретные компоненты для конкретных программ.

Причина, по которой я смотрюэто связано с тем, что я имею дело с необъектно-ориентированным PHP-кодом, который слишком велик, чтобы его можно было перевести на объектно-ориентированный.Эта программа отображает различные фирменные веб-приложения с разными, но похожими правилами для каждого сайта.В настоящее время большая часть кода выглядит следующим образом:

if($_SESSION['country'] === "Canada" && $_SESSION['brand'] === "X" 
   && $_SESSION['type'] !== "1" || $_SESSION['brand'] !== "Y" 
   && $_SESSION['type'] === "2") {
      include("mod_something.php");
}

Где условия могут повторяться в нескольких местах кода для включения различных файлов.

И я хотел бы пересмотреть некоторые из них, чтобыбольше похожи на:

if($_SESSION['component-red'] === true && $_SESSION['country'] === "Canada") {
    include("mod_something.php");
} 

и имеют переменные компонентов, установленные в центральном местоположении на основе выбора бренда и пользователя (сайты используют шаблон проектирования с фронтальной загрузкой или FrontController).

Любые предложенияили советы о том, как этого добиться, но я не совсем уверен, как исследовать это для не-ООП-кода.

Спасибо.

Редактировать: я получил образование в ООП, ноэто не мой вопрос.

Ответы [ 2 ]

1 голос
/ 19 января 2012

Я понимаю, что проводить время с ООП может не помочь с существующим кодом.На самом деле, если вы не собираетесь переписывать весь этот существующий код, предлагаются следующие предложения:

  1. Убедитесь, что у сайта есть только одна точка входа, если нет - рефакторинг.
  2. Извлеките всеповторение функциональности из файлов «модуля» в этот сценарий однократной записи: это может быть инициализация глобальных ресурсов, общие задачи, фильтрация запросов, инициализация макета и т. д.
  3. Создание подпрограммы, которая будет ветвить «модули» в зависимости от приложениясостояние и запрос - маршрутизатор :) В основном это switch или if ... elseif ... else
  4. Старайтесь, чтобы файлы «модуля» выполняли только бизнес-логику и присваивали значения шаблону.

Возможно, вам потребуется разделить или объединить некоторые модули в зависимости от фрагментации логики в существующем источнике.Однажды я проделал аналогичную работу, когда уродливый сайт электронной коммерции потребовал модификации.Лучше этот полностью фрагментированный код.

0 голосов
/ 19 января 2012

Я знаю, что вы хотите сделать это без ООП, но то, что вы описываете, буквально ООП.Вы просто называете это «модулями», мы называем это «объектами», то же самое.

Что вам нужно сделать, так это потратить некоторое время на изучение принципов ООП и как их реализовать на PHP.Когда это произойдет, вы увидите преимущества использования объектов и классов.

...