Контрактное программирование в Groovy 4
Примеры кода
Появление GContracts в Groovy 4. Пример использования контрактов, влияние на AST-трансформации, особенности устройства. Попытка усилить и ослабить условия, обойти через особенности языка и рефлексию. Более подробное их определение, пересечение накладываемых ограничений с утверждениями, интерфейсами-типами и абстрактными классами. Возможные преимущества и недостатки, конкуренция с валидацией, возможные места для применения.
Проблемы внедрения зависимостей
Разные подходы к определению зависимостей. Количественный и качественный их анализ. Прямое создание объекта в коде, его проблемы. Недостатки IoC-контейнера. Паттерны внедрения зависимостей, влияние их объект. Object Mother и необходимость подстраиваться под ситуацию.
Вспомним о Protected Variations
Шаблон Protected Variations в GRASP, проблематика изменений, сложность определения их локализации и связь с проработкой предметной модели. Выявление изменений через декомпозицию задачи на концептуальные слои по аналогии с известными архитектурными схемами на примере MVC.
Метод аналогии в архитектуре программ
Проблематика архитектуры. Аналогия, её виды и принципы. Биологическая аналогия, структурная схема классов приложения, исследование популяции классов. Требования как аналогия факторов среды, действие факторов, адаптация, основные законы - лимитирующий фактор Либиха, Шелфорда, Митчерлиха.
Особенности выделения интерфейсов
Примеры кода
Основные отличия интерфейсов от наследования, анализ отношений совместимых и несовместимых понятий: подчинение, пересечение, соподчинение. Недостатки интерфейсов, разные подходы к ним в литературе. Поиск целей для интерфейса.
Самый простой маппер для базы данных знаков зодиака
Примеры кода
Post image
Простая база данных знаков зодиака, объединение Groovy и JavaFX, отображение множеств, виды маппинга. Маппинг, основанный на ассоциации. Классы-универсалы для работы с запросами и соединением, валидация, класс маппинга для отображения типов и отношений, менеджер сущностей, примитивная кодогенерация.
Влияние трейтов на архитектуру
Примеры кода
Моделирование захвата трейтом иерархии классов. Использование трейтов для функционала, не связанного с предметной областью, цепочки ответственности, SAM-трейты, наследование от набора компонентов во фреймворке. КотоПёс и его реализация на трейтах и без.
JavaFX - полезные советы, ссылки, ресурсы
Некоторые русскоязычные ресурсы о тулките, полезные ссылки, упоминание инструментов. Заметки об архитектуре JavaFX-приложения: проектирование управления зависимостями, работа с FXML, улучшение контролов, шина сообщений, стейт-машина и прочие советы.
Программирование и маркетинг
Предупреждение об исследовательском характере статьи. Информационный эксперт и GRASP. Приоритет универсального эксперта. Экономика как эксперт, список маркетинговых действий в контексте IT, нестабильность и сменяемость технологий, польза экономики для планирования и предотвращения рисков личного стека. Возможные ошибки.
Индукция Бэкона-Милля или поиск причины бага методом тыка
Примеры кода
Индукция, её виды. Методы научной индукции и выявления причинно-следственных связей: метод единственного сходства, единственного различия, объединенный, сопутствующих изменений, остатков. Примеры использования в случае потери регистров в ассемблере NASM на Linux x64. Условно-категорический силлогизм и его модусы. Заметка о контрактном программировании. Недостатки методологии и возможность ошибок.