Содержание

Слайд 2

О чем я new AlarusApp(appConstructor) LoadPlugins() LoadPlugins(true) LoadPlugins(false) LoadPluginsForTests() Builder() AppBuilder() GIS AlarusApp

О чем я

new AlarusApp(appConstructor)

LoadPlugins()

LoadPlugins(true)

LoadPlugins(false)

LoadPluginsForTests()

Builder()

AppBuilder()

GIS

AlarusApp

Слайд 3

Слайд 4

Моя цель Отрефакторить и привести в порядок Рассказать вам об этом Написать статью в вики

Моя цель

Отрефакторить и привести в порядок
Рассказать вам об этом
Написать статью в

вики
Слайд 5

Зачем это всё нужно Единая точка входа: единообразие и отсутствие копипаста

Зачем это всё нужно

Единая точка входа: единообразие и отсутствие копипаста
Развязка зависимостей

(DIP)
Рантайм подгрузка зависимостей (нет #ifdef-ам)
Слайд 6

Загрузка зависимостей (сервисов) Базовая инициализация (локализация, сетевые настройки, обработчики исключений) Построение

Загрузка зависимостей (сервисов)

Базовая инициализация (локализация, сетевые настройки, обработчики исключений)

Построение компонентов приложения

Работа

приложения

Освобождение ресурсов

[RegisterServiceAttribute]
Ioc - файлы

IAppConstructor.Construct()

IAppConstructor.Release()

IoC фреймворк

Единая точка входа

Слайд 7

Расставили атрибуты для сервисов Написали ioc-ки Реализовали IAppConstructor Работающее приложение IoC движок

Расставили атрибуты для сервисов
Написали ioc-ки
Реализовали IAppConstructor

Работающее приложение

IoC движок

Слайд 8

код

код

Слайд 9

Что делать Устранить имеющийся копипаст связанный с точкой входа Переместить код

Что делать

Устранить имеющийся копипаст связанный с точкой входа
Переместить код инициализации в

IAppConstructor
Не копипастить при создании новых приложений
Не добавлять новые методы в IAppBuilder и иже с ним
Слайд 10

Перспектива Выпилить AppBuilder и иже с ним Применить DI и выпилить

Перспектива

Выпилить AppBuilder и иже с ним
Применить DI и выпилить ServiceLocator из

глобального контекста
Начать применять TDD

Меньше багов
Проще понимать, менять, рефакторить код
Быстрее создавать новый код