1. SOLIDный код:
с TDD это просто
Сергей Калинец http://tdd4.net
Skype: sergiikalinets
@skalinets
2. Обо мне
• Более 10 лет в промышленной разработке
• Руковожу разработкой в киевском офисе
компании CompatibL
• Тренер по инженерным практикам в
scrumguides.com
• Ведущий клуба практической разработки в
stratoplan.ru
21. Single Responsibility: Test
• Данные
– Что знает?
– Какие связи
между объектами
поддерживает?
• Поведение
– Что решает?
– Какие услуги
предоставляет?
27. Liskov Substitution
• Предусловия не могут быть ужесточены в
наследнике
• Постусловия не могут быть ослаблены в
наследнике
• Инварианты базового типа должны
соблюдаться и в наследнике
• Исторические ограничения
28. Liskov Substitution и TDD
• Тесты могут проверять использование
наследников вместо предков
• В случае нарушения юнит тесты
усложняются
30. Interface Segregation
• Utility Modules should be included
полностью
• Тесты на страже Extract interface/base class
• Тестовые дублёры могут скрывать
нарушения
32. Interface Segregation и TDD
• Тестовые дублеры диктуют API
• Тесты усложняются, когда зацепление
понижается
• Тесты обезбаливают разбиение
интерфейсов
33. Dependency Inversion
• Высокоуровневые модули не должны
зависеть от низкоуровневых. Оба должны
зависеть от абстракций.
• Абстракции не должны зависеть от
деталей. Детали должны зависеть от
абстракций.
34. Dependency Inversion и TDD
• Service Locator или Dependency Injection?
• Двойники в TDD создают абстракции
• Настройка тестов легче с Dependency
Injection
Надиктовано КОВелосипед не изобретенОднако на практике редко был замечен – собеседования, общение на встречах и конференциях, тренингах.Добавляется простота и предсказуемость. Это не значит, что сложного нельзя сделать, это значит, что сложные вещи делаются просто.
Проект с нуля,TDD c нуля, учились на своем опыте
Аналогия – нормализированные модели DB.Нарушение приводит к Хрупкому дизайнуКритика: несовместимость с реальным миром, крайности реализации
Вам пофик, сколько лошадей, какой объем двигателя и тип подвески.Если после нажания на тормоз не тормозит -- ВНЕЗАПНО
History: mutable point
High Cohesion
Что общего? Это аббревиатурыЧто разного? Solid это аббревиатура аббревиатур, а не – просто фразы