ByndyuSoft 2. Консультант по вопросам разработки приложений и организации работы IT компаний 3. Внештатный сотрудник Академии АйТи 4. Технический блог http://blog.byndyu.ru 5. Преподаю в ЮУрГУ 6. Организую конференции .NET-разработчиков http://www.dotnetconf.ru 7. Веду группу в Google Group по проблемам разработки приложений http://groups.google.com/dotnetconf
метрика, характеризующая степень зависимости классов друг от друга 2. Loosely coupled vs. Tightly coupled 3. Типы: – Content coupling – Common coupling – Control coupling – Data coupling – Message coupling Введение: Базовые понятия
на сколько элементы модуля принадлежат друг другу 2. Low cohesion vs. High cohesion 3. Coupling ~ Cohesion 4. Типы: – Coincidental cohesion (worst) – Logical cohesion – Temporal cohesion – Procedural cohesion – Communicational cohesion – Sequential cohesion – Functional cohesion (best) Введение: Базовые понятия
уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракции Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракции Реализация принципа: Plugin, Factory, Service Locator, Inversion of Control, Dependency Injection Dependency Inversion Principle
1. Домен приложения 2. Классы, которые не будут изменены (Program, Global.asax, …) 3. Сервисы, которые не будут меняться (не обманывайте себя, они обязательно будут) 2. Volatile Dependencies 1. Сервисы в приложении 2. Внешние библиотеки 3. Работа с внешней инфраструктурой 4. DateTime?
binding Сервисы могут быть заменены другими сервисами 2. Extensibility Код может быть расширен и легко повторно использован 3. Parallel development Разработка кода с низкой связностью упрощает работу в параллели 4. Maintainability Классы с четкими границами ответственности легко сопровождать 5. Testability Модули могут быть протестированы