34. DRY/DIE
Do not Repeat Yourself
Do not Repeat Yourself
Duplication Is Evil
Andy Warhal
35. S Single responsibility principle
O Open/closed principle
L Liskov substitution principle
I Interface segregation principle
D Dependency inversion principle
40. Dependency inversion principle
Модули верхних уровней не должны
зависеть от модулей нижних уровней.
Модули должны зависеть от абстракций.
Абстракции не должны зависеть от
деталей. Детали должны зависеть от
абстракций.
SOLID
41. Принципы - это тест
http://www.flickr.com/photos/jason_coleman/325107937/
42. Размер имеет значение
http://www.asergeev.com/pictures/archives/compress/2011/936/20s.htm
45. Сильная связность
GeoModule
Application
CountryFinder
+GetCountry()
Countries
GeoDataLayer
+LoadCountry()
public Country GetCountry( int id )
{
return geo.Countries.Finder.DataLayer.LoadCountry( id );
}
47. God class
http://www.nrk.no/kultur-og-underholdning/1.7321778
48. Закон Деметры
Метод М объекта О может обращаться:
• К самому объекту О
• К параметрам метода М
• К любому объекту, созданному методом М
• К методам и свойствам объекта О
• К глобальным переменным
49. Закон Деметры
Можно:
name = this.Name();
code = this.Phone.CountryCode; // Простой агрегат
Нельзя:
return geo.Countries.Finder.DataLayer.LoadCountry( id );
59. Observer
Subject <<interface>>
+observers IObserver
+Attach(o: IObserver) *
+Detach(o: IObserver) +Update()
+Notify()
ConcreteSubject ConcreteObserver
public void Notify() {
foreach( var o in observers)
o.Update();
}
60. Каталоги паттернов
• «Design patterns. Elements of Reusable
Object-Oriented Software»
• Portland Pattern Repository (c2.com/ppr/)
• PatternShare (www.patternshare.org)
• etc.
61. DDD
Domain Driven Design*
* Проблемно-ориентированное проектирование
62. Проблемная область
В каждом маленьком ребенке Каждый новенький ребенок
И мальчишке, и девчонке Вылезает из пеленок
Есть по двести грамм взрывчатки И теряется повсюду
Или даже полкило! И находится везде!
Должен он бежать и прыгать Он всегда куда-то мчится
Все хватать, ногами дрыгать, Он ужасно огорчится,
А иначе он взорвется, Если что-нибудь на свете
Трах-бабах – и нет его! Вдруг случится без него!