Справочник программиста в стихах. От проектирования до внедрения
Шрифт:
Помнить все связи объектов капризных,
Чтоб, ненароком, их не упустить.
Чтобы не вышло неведомых багов,
Нужно, частенько, проект в голове
Как-то держать. Если код одинаков,
Распределен в однотипной канве,
Это становится проще немного.
Если же связи не слишком сильны
Между частями его, то дорога
Эта заметно полегче. Увы
Все ухищрения работают явно,
Пусть хорошо, но эффект всё ж размыт.
Память нужна, чтобы помнить
То, для чего код программный открыт.
Глава 8. Парадигмы программирования
Императивное программирование
В императивной парадигме
Код – для процессора команды,
Что будут выполнены в ритме
Последовательном, как ни странно.
Мы пишем то, как надо сделать,
И ожидаем, что так будет.
Здесь можно весь контроль изведать,
Но просто что-то перепутать.
Декларативное программирование
Декларативная программа
Обозначает результаты –
И представляет описание
Того, что нам в итоге надо.
В ней нет значений переменных,
Нет точной логики работы.
Примером может быть отменным
HTML (Аштиэмэль), SQL (Сикьюэль) коды.
Процедурное программирование
При парадигме процедурной
Все операторы и строки –
Команды кода – можно будет
Делить на целостные блоки.
Структурное программирование
В структурной парадигме сутью
Явилось оформление кода
В иерархической структуре –
В формате иерархий блоков.
За счёт того, что между ними
Нет безусловных переходов,
Ограничениями такими
Даёт облегчить тесты кода.
Объектно-ориентированное программирование
При ООП программу строят
Из блоков кода и их данных.
Структуру классами готовят,
И создают их экземпляры,
Как по шаблону, для хранения
И обработки данных, чтобы,
В больших проектах упрощения
Таким путём добыть немного.
Функциональное программирование
В функциональной парадигме
Все вычисления ведутся
В «математическом режиме» –
В формате вычисления функций
Без сохранения состояний.
Используются лишь входные
Их аргументы. Позволяя
Убрать ошибки основные
В многопоточных вычислениях,
Но и цена идёт большая –
Для получения значения
Расчёт сначала повторяя.
Аспектно-ориентированное программирование
В аспектной парадигме можно
Сквозные функции системы,
Которые бывает сложно
Не поместить в другие темы,
К примеру, логи и проверки,
Авторизацию, профайлинг,
Отметить в качестве аспектов.
К примеру, атрибутов в шарпе.
Обобщённое программирование
При обобщённой парадигме
Для обработки разных данных
Используются алгоритмы,
Что пишутся универсально.
Примером могут быть шаблоны –
Дженерик-функции и классы.
Параметрический, в итоге,
Полиморфизм состоялся.
Глава 9. Принципы проектирования
Глобальное проектирование прежде всего (Big Design Up Front)
Прежде всего подумать стоит
И спроектировать систему.
И это, может, сэкономит
Нам кучу времени, проблемы
Предотвратив на ранних сроках.
Так изменить ТЗ – не долго,
А код бессмысленный намного
Дороже написать без толку.
Предметно-ориентированное проектирование (Domain-driven design, DDD)
Для проектирования кода
На основании бизнес-правил –
То бишь проблемного подхода –
Модель предметную составим.
Система, как набор моделей
Предметной области, позволит
Облегчить построение в целом
Её структуры и ускорит
Её развитие в дальнейшем.
Понизит сложность изучения
Частей системы для скорейших
Их написания и внедрения.
Придерживайся простоты (Keep it simple, stupid, KISS)
Усложняя, упрощай –
Избегай ненужных дебрей,
В простоте все сохраняй,
Ищи лучшее решение.
Чем система проще будет,
Тем надёжнее она,
Усложнение всё погубит,
И запутает весьма.
Бритва Оккама (Occam’s Razor, OR)
Не нужно сущность создавать,
Когда ей нет особой роли.
Не нужно нового, когда
Подходит то, что есть дотоле.
Не повторяйте себя (Don’t Repeat Yourself, DRY)
Не надо повторять себя –
Решай единожды задачи.
Ведь если надо будет взять
И сделать что-либо иначе,
Во всех повторах повторить