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

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

Upload: agiledays

Post on 25-Dec-2014

259 views

Category:

Documents


2 download

DESCRIPTION

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

TRANSCRIPT

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