empty

Стиль программирования

Ниже изложены некоторые принципы, которых я придерживаюсь в PHP-разработке

1. MVC (model-view-controller): все создаваемые мной компоненты, как правило, условно делятся на три категории – это, во-первых, контроллер (он же роутер и маршрутизатор); во-вторых, основной механизм работы системы – в нём содержатся вся основная логика и алгоритмы работы системы; и в-третьих, это визуальное представление – как правило, HTML-шаблон с расширением PHTML, в котором скомбинированы голый HTML-код и динамические вызовы элементов механизма.

2. MVP (minimum viable product): в случаях, когда у меня есть выбор или право на решение – предпочитаю выпускать минимально жизнеспособный продукт и затем дорабатывать его. Это даёт возможность сразу же запустить в работу первые шаги по автоматизации и начать сбор коллекции ошибок, которая пригодится при дальнейшей разработке.

3. DRY (Don’t Repeat Yourself): если в механике системы появляются некие крайне схожие алгоритмы, с прогнозом идентичного развития – стараюсь объединить эти алгоритмы в один универсальный метод.

4. KISS (Keep it simple, stupid): стараюсь создавать максимально простой и удобочитаемый (но не в ущерб функциональности) программный код. Комментирование кода и составление документации – непременные атрибуты разработки.

5. Уровни вложения: в процессе разработки я стараюсь избегать чрезмерной степени вложения вызовов методов, в пользу удобочитаемости кода. Исключения – рекурсия, предусматривающая большое количество вложенных вызовов (например, чтение структуры каталогов на сервере).

6. Чистая память: стараюсь не забывать об операторах очистки оперативной памяти от ненужных сущностей (переменных и массивов) – в случае с многомерными массивами это позволяет сэкономить гигабайты памяти и существенно снизить нагрузку на сервер при формировании страниц системы. Стандартное время жизни переменных во многих случаях представляется мне избыточным.

7. Довольствуйтесь минимальным: согласно этому принципу, к примеру, идентификатор текущего пользователя системы будет размещён мной не в переменной, а в константе, если я уверен, что этот идентификатор никогда не будет изменяться на протяжении сеанса. Другой пример – выбор в пользу конструкции switch-case с отказом от конструкции if, если я уверен, что анализируемый параметр не будет изменяться в процессе проверки. Основания для таких решений очевидны: повышение безопасности (однажды определённое значение константы, в отличие от переменной, в дальнейшем невозможно ни удалить, ни изменить до окончания работы сценария) и быстродействия (конструкция switch-case работает значительно быстрее конструкции if) системы.

8. Уникальные сущности: категорически избегаю создания методов с идентичными наименованиями, вне зависимости от используемого пространства имён – у каждого метода наименование должно быть строго уникальным, для чего в качестве отличительного признака нередко служит префикс аббревиатуры родительского класса.

9. Обфускация программного кода: категорически избегаю этого приёма и никогда не использую его в работе.