Простота Дизайна - не раскрученная XP практика.

16
Простота Дизайна Не раскрученная XP практика Вячеслав Москаленко Agile Coach, «Luxoft»

description

Вячеслав Москаленко, Luxoft (Киев) Наверняка, все мы слышали про TDD (Разработка через тесты), Continuous Integration (Непрерывная интеграция), Pair Programming (Парное программирование). Может быть, кто-то из нас более глубоко изучал эти дисциплины и пытался внедрить в текущую разработку. Все эти дисциплины составляют часть XP (экстремальное програмирование) методологии. К слову, эта методология подарила миру User Stories (Пользовательские Истории), как способ документации требований. Эти понятия на слуху, они маркетинговые, раскрученные. Есть менее используемые практики, но тем не менее важные с точки зрения усиления гибкости разработки. Эта короткая речь о простоте дизайна (Simple Design). О том, как в гибкой разработке, с очень короткими итерациями, развивать архитектуру и дизайн с точки зрения XP методологии. Какие основные преимущества и недостатки присущи экстремальной дисциплине, которая называется "Простота Дизайна".

Transcript of Простота Дизайна - не раскрученная XP практика.

Page 1: Простота Дизайна - не раскрученная XP практика.

Простота Дизайна Не раскрученная XP практикаВячеслав Москаленко

Agile Coach, «Luxoft»

Page 2: Простота Дизайна - не раскрученная XP практика.

Наш мозг на грани выживания

Все кажется запутанным и сложным

Page 3: Простота Дизайна - не раскрученная XP практика.

Сложные задачи

Сложная информация

Page 4: Простота Дизайна - не раскрученная XP практика.

Сложные связи

Сложный дизайн

Page 5: Простота Дизайна - не раскрученная XP практика.

Простота встречается редко

Но что это означает ?

Page 6: Простота Дизайна - не раскрученная XP практика.

Умение достигать максимального эффекта

минимальными затратами

Page 7: Простота Дизайна - не раскрученная XP практика.

Приведение сложных вещей

К простым формам

Page 8: Простота Дизайна - не раскрученная XP практика.

Как уменьшить сложность дизайна ?

Путь экстремального программирования

Page 9: Простота Дизайна - не раскрученная XP практика.

все тесты корректно срабатывают;

дизайн не содержит дублирующегося кода;

дизайн четко выражает намерения программиста;

дизайн содержит наименьшее возможное количество классов и методов.

Page 10: Простота Дизайна - не раскрученная XP практика.

1. Фокусироваться на тестах

Тесты простые, не отключены и падают редко. Шаблоны xUnit

@Test() void given_push_pressure_100_and_car_with_ABS_verify_braking_distance_30() { ICar car = prepareCarWithABS(); car.pushBrake(100); assertThat(car.getBrakingDistance(), is(30));}

@Test() void given_push_pressure_50_and_car_without_ABS_verify_braking_distance_25() { ICar car = prepareCarWithoutABS(); car.pushBrake(100); assertThat(car.getBrakingDistance(), is(25));}

Page 11: Простота Дизайна - не раскрученная XP практика.

2. Уменьшать количества кода

public void pushBrake(int pressure) {…if (carWithABS()) {

…} else {

…}…if (carWithABS()) {…} else {

…}…

}

Шаблоны проектирования

Page 12: Простота Дизайна - не раскрученная XP практика.

3. Выражать намерение через код

Clean Code, SOLID

public List<int[]> getThem() { List<int[]> list1 = new ArrayList<int[]>(); for (int[] x : theList) if (x[0] == 4) list1.add(x); return list1;}

public List<Cell> getFlaggedCells() { List<Cell> flaggedCells = new ArrayList<Cell>(); for (Cell cell : gameBoard) if (cell.isFlagged()) flaggedCells.add(cell); return flaggedCells;}

Page 13: Простота Дизайна - не раскрученная XP практика.

4. Не плодить сущности

Фабрика, которая возвращает один тип объектов

Библиотеки, которые никогда не используются

Дополнительные абстракции, которые «потом» понадобятся

Page 14: Простота Дизайна - не раскрученная XP практика.

4. Упрощать внешние интерфейсы

Вот и все

Page 15: Простота Дизайна - не раскрученная XP практика.

Полезные дисциплины

Design Patterns

Emergent Design

xUnit Patterns

Refactoring Patterns

Object Oriented Design

Doman Driven Design

Изучаем сквозь призму «Простого Дизайна»

Page 16: Простота Дизайна - не раскрученная XP практика.

Послесловие

Или за что я люблю Maven

mvn clean install