Перейти к содержимому
- Введение
- Основные темы этого курса
- Предметная область (Domain Model)
- Онтология
- Уровни проектирования (Барьеры абстракции)
- Инварианты
- Онтология
- Типы связей
- one-to-many или o2m
- many-to-many или m2m
- one-to-one или o2o
- Дополнительные материалы
- Онтология
- Предметно-ориентированное проектирование
- ER-модель
- Точки на координатной плоскости
- Семантика массивов
- Код, который заставляет думать: неговорящие имена, плохие абстракции, неправильные структуры данных, сильная зависимость от контекста — плохой код (при этом важно не путать лёгкость и простоту).
- Дополнительный материал
- Ментальное программирование 1
Принципы- Популярные
- DRY – Don’t Repeat Youself – не повторяйся
- KISS – Keep It Simple, Stupid – не усложняй
- YAGNY – You Ain’t Gonna Need It – Вам это не понадобится! Его суть в том, чтобы реализовать только поставленные задачи и отказаться от избыточного функционала
- Базовые
- GRASP – general responsibility assignment software patterns — общие шаблоны распределения ответственностей
- SOLID – когда при написании кода используется несколько принципов вместе, то это значительно облегчает дальнейшую поддержку и развитие программы
- CQS – Command-query separation – метод должен быть либо командой, выполняющей какое-то действие, либо запросом, возвращающим данные, но не одновременно
- Law of Demeter – Закон Деметры – слабая связность – каждый программный модуль:
- должен обладать ограниченным знанием о других модулях:
- знать о модулях, которые имеют «непосредственное» отношение к этому модулю.
- должен взаимодействовать только с известными ему модулями «друзьями», не взаимодействовать с незнакомцами. обращаться только к непосредственным «друзьям».
- Single level of Abstraction Principle (SLAP) – Принцип единого уровня абстракций – В функции не должны сочетаться разные уровни абстракции. Например, функция для проверки формы не должна выполнять вызовы ввода/вывода
- Ментальное программирование 2
- Simple Made Easy
- Создание абстракции
- Конструкторы и селекторы
- Интерфейсы
- Абстрактный тип данных
- Пример преобразования декартовых координат в полярные и наоборот
- Уровневое проектирование
- Инварианты
- Инвариант – логическое выражение, определяющее непротиворечивость состояния.
Пример:
Cравнение неприведенной и приведенной рациональных дробей должно происходить корректно:
makeRational(2, 4) = makeRational(8, 16),
т.е. необходимо, например, в конструкторе рациональной дроби makeRational приводить ее к нормальной). - Техника мемоизации – запоминание возвращенных значений функций, для для исключения их повторного расчета для переданных аргументов
- Защита данных от прямого воздействия, в обход интерфейсных функций. В PHP за это отвечают модификаторы доступа к свойствам объектов
public
, protected
и private
- Курс PHP: Составные данные
- Обход защиты данных с помощью Reflection API.
- Дополнительные задания
- Парсинг урла – parse_url
- Парсинг параметров запроса – parse_str
- Формирование строки запроса – http_build_query