SlideShare a Scribd company logo
1 of 72
Базовые правила и принципы проектирования ПО Евгений Кривошеев [email_address]
О вашем инструкторе ,[object Object],[object Object],[object Object]
Цели семинара ,[object Object],[object Object]
Цели семинара ,[object Object],[object Object]
Необходимая подготовка ,[object Object],[object Object],Слушатели должны:
[object Object],[object Object],Организация обучения
[object Object],[object Object],[object Object],[object Object],Конференции УЦ  Luxoft
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Ближайшие занятия в Школах
План семинара
Введение ,[object Object],[object Object],Ключевые понятия  ООП-проектирования (общеизвестные)
Введение ,[object Object],[object Object],[object Object],[object Object],[object Object],Ключевые понятия  ООП-проектирования (менее известные)
Введение ,[object Object],[object Object],[object Object],[object Object],Responsibility
Введение ,[object Object],[object Object],Intention
Введение ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Coupling
Введение ,[object Object],[object Object],[object Object],[object Object],[object Object],Cohesion
Введение ,[object Object],[object Object],[object Object],Granularity
Введение ,[object Object],[object Object],Инструменты  code reuse  в ООП
Введение ,[object Object],[object Object],[object Object],Литературные источники семинара
План семинара
Design Rules Литературные источники
Design Rules Design Rules http://www.laputan.org/drc/drc.html
Design Rules ,[object Object],[object Object],Design Rules
Design Rules ,[object Object],[object Object],[object Object],DR1. Use Consistent Names DR1. Recursion introduction
Design Rules ,[object Object],[object Object],DR 2 . Eliminate Case Analysis
Design Rules ,[object Object],[object Object],DR 3 . Reduce The Number Of Arguments
Design Rules ,[object Object],[object Object],DR 4 . Reduce The Size Of Methods
[object Object],Design Rules DR 5 . Class Hierarchies Should Be Deep And Narrow далее
Design Rules DR 5 . Class Hierarchies Should Be Deep And Narrow vs
Design Rules ,[object Object],DR 6 . The Top Of The Class Hierarchy Should Be Abstract vs
Design Rules ,[object Object],[object Object],[object Object],DR 7 . Minimize Access to Variables
Design Rules ,[object Object],[object Object],[object Object],DR 8 . Subclasses Should Be Specializations
Design Rules ,[object Object],[object Object],DR 9 . Split Large Classes
Design Rules ,[object Object],[object Object],DR 10 . Factor Implementation Differences Into Subcomponents
Design Rules ,[object Object],[object Object],[object Object],[object Object],[object Object],DR 1 1. Separate Methods That Do Not Communicate
Design Rules ,[object Object],[object Object],DR 12 . Send Messages To Components Instead Of To Self
Design Rules ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],DR 1 3. Reduce Implicit Parameter Passing
План семинара
[object Object],Вопросы
План семинара
Design Principles Литературные источники
Design Principles Design Principles DRY : Don’t Repeat Yourself  SCP : Speaking Code OCP : Open / Closed LSP : Liskov Substitution DIP : Dependency Inversion ISP : Interface Segregation REP : Reuse/Release Equivalence CRP : Common Reuse CCP : Common Closure ADP : Acyclic Dependencies SDP : Stable Dependencies SAP : Stable Abstractions TDA : Tell, Don’t Ask SOC : Separation Of Concerns Stefan Roock. Refactoring in Large Software. 2006
Design Principles ,[object Object],[object Object],[object Object],DRY: Don’t Repeat Yourself
Design Principles ,[object Object],[object Object],SCP: Speaking Code
Design Principles ,[object Object],[object Object],[object Object],OCP: Open / Closed далее
Design Principles ,[object Object],[object Object],[object Object],[object Object],OCP: Open / Closed далее
Design Principles OCP: Open / Closed
Design Principles ,[object Object],[object Object],[object Object],LSP: Liskov Substitution далее
Design Principles LSP: Liskov Substitution
Design Principles ,[object Object],[object Object],DIP: Dependency Inversion далее
Design Principles ,[object Object],[object Object],[object Object],[object Object],DIP: Dependency Inversion далее
Design Principles DIP: Dependency Inversion далее vs
Design Principles DIP: Dependency Inversion далее
Design Principles ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],DIP -> IoC   ->   Dependency Injection
Design Principles ,[object Object],[object Object],ISP: Interface Segregation далее
Design Principles ISP: Interface Segregation
Design Principles ,[object Object],[object Object],[object Object],REP: Reuse/Release Equivalence
Design Principles ,[object Object],[object Object],CRP: Common Reuse
Design Principles ,[object Object],CCP: Common Closure
Design Principles ,[object Object],ADP: Acyclic Dependencies vs
Design Principles ,[object Object],[object Object],[object Object],SDP: Stable Dependencies
Design Principles ,[object Object],SAP: Stable Abstractions
Design Principles REP : Reuse/Release  Equivalence CRP : Common Reuse CCP : Common Closure ADP : Acyclic Dependencies SDP : Stable Dependencies SAP : Stable Abstractions
Design Principles ,[object Object],TDA: Tell, Don’t Ask далее
Design Principles ,[object Object],[object Object],[object Object],TDA: Tell, Don’t Ask
Design Principles ,[object Object],[object Object],SOC: Separation Of Concerns далее
Design Principles SOC : Separation Of Concerns
План семинара Выводы
[object Object],Вопросы Ссылка на оценочную форму семинара: http://www.luxoft-training.ru/events/vote
[object Object],[object Object],Учебный   Центр  Luxoft http://luxoft-training.ru
[object Object],[object Object],[object Object],[object Object],Конференции УЦ  Luxoft
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Ближайшие занятия в Школах
Базовые правила и принципы проектирования ПО Евгений Кривошеев [email_address]

More Related Content

What's hot

Принципы объектно-ориентированного дизайна
Принципы объектно-ориентированного дизайнаПринципы объектно-ориентированного дизайна
Принципы объектно-ориентированного дизайнаСергей Шебанин
 
Шаблоны разработки ПО. Часть 1. Введние
Шаблоны разработки ПО. Часть 1. ВведниеШаблоны разработки ПО. Часть 1. Введние
Шаблоны разработки ПО. Часть 1. ВведниеSergey Nemchinsky
 
Базовые принципы и понятия технологии разработки объектно-ориентированных инф...
Базовые принципы и понятия технологии разработки объектно-ориентированных инф...Базовые принципы и понятия технологии разработки объектно-ориентированных инф...
Базовые принципы и понятия технологии разработки объектно-ориентированных инф...DEVTYPE
 
C++ осень 2012 лекция 7
C++ осень 2012 лекция 7C++ осень 2012 лекция 7
C++ осень 2012 лекция 7Technopark
 
Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Sergey Nemchinsky
 
шаблоны проектирования (42)
шаблоны проектирования (42)шаблоны проектирования (42)
шаблоны проектирования (42)romachka_pole
 
Шаблоны разработки ПО. Шаблоны GRASP
Шаблоны разработки ПО. Шаблоны GRASPШаблоны разработки ПО. Шаблоны GRASP
Шаблоны разработки ПО. Шаблоны GRASPSergey Nemchinsky
 
Модифицируемость программных систем
Модифицируемость программных системМодифицируемость программных систем
Модифицируемость программных системDima Dzuba
 
UML2. Eleven Trivial Tips for BPMN Modellers [1.01, RUS]
UML2. Eleven Trivial Tips for BPMN Modellers [1.01, RUS]UML2. Eleven Trivial Tips for BPMN Modellers [1.01, RUS]
UML2. Eleven Trivial Tips for BPMN Modellers [1.01, RUS]Alex V. Petrov
 
Спецкурс 2014, занятие 3. Абстракции, именование, документирование
Спецкурс 2014, занятие 3. Абстракции, именование, документированиеСпецкурс 2014, занятие 3. Абстракции, именование, документирование
Спецкурс 2014, занятие 3. Абстракции, именование, документирование7bits
 

What's hot (10)

Принципы объектно-ориентированного дизайна
Принципы объектно-ориентированного дизайнаПринципы объектно-ориентированного дизайна
Принципы объектно-ориентированного дизайна
 
Шаблоны разработки ПО. Часть 1. Введние
Шаблоны разработки ПО. Часть 1. ВведниеШаблоны разработки ПО. Часть 1. Введние
Шаблоны разработки ПО. Часть 1. Введние
 
Базовые принципы и понятия технологии разработки объектно-ориентированных инф...
Базовые принципы и понятия технологии разработки объектно-ориентированных инф...Базовые принципы и понятия технологии разработки объектно-ориентированных инф...
Базовые принципы и понятия технологии разработки объектно-ориентированных инф...
 
C++ осень 2012 лекция 7
C++ осень 2012 лекция 7C++ осень 2012 лекция 7
C++ осень 2012 лекция 7
 
Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"
 
шаблоны проектирования (42)
шаблоны проектирования (42)шаблоны проектирования (42)
шаблоны проектирования (42)
 
Шаблоны разработки ПО. Шаблоны GRASP
Шаблоны разработки ПО. Шаблоны GRASPШаблоны разработки ПО. Шаблоны GRASP
Шаблоны разработки ПО. Шаблоны GRASP
 
Модифицируемость программных систем
Модифицируемость программных системМодифицируемость программных систем
Модифицируемость программных систем
 
UML2. Eleven Trivial Tips for BPMN Modellers [1.01, RUS]
UML2. Eleven Trivial Tips for BPMN Modellers [1.01, RUS]UML2. Eleven Trivial Tips for BPMN Modellers [1.01, RUS]
UML2. Eleven Trivial Tips for BPMN Modellers [1.01, RUS]
 
Спецкурс 2014, занятие 3. Абстракции, именование, документирование
Спецкурс 2014, занятие 3. Абстракции, именование, документированиеСпецкурс 2014, занятие 3. Абстракции, именование, документирование
Спецкурс 2014, занятие 3. Абстракции, именование, документирование
 

Similar to Design Rules And Principles

Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.EatDog
 
Общие темы. Тема 02.
Общие темы. Тема 02.Общие темы. Тема 02.
Общие темы. Тема 02.Igor Shkulipa
 
Автоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpАвтоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpgeekfamilyrussia
 
Как спроектировать хороший API и почему это так важно
Как спроектировать хороший API и почему это так важноКак спроектировать хороший API и почему это так важно
Как спроектировать хороший API и почему это так важноBubon Makabra
 
модульное программирование (35)
модульное программирование  (35)модульное программирование  (35)
модульное программирование (35)romachka_pole
 
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]Alex V. Petrov
 
Lektsia 5
Lektsia 5Lektsia 5
Lektsia 5bomfan
 
C++ осень 2013 лекция 8
C++ осень 2013 лекция 8C++ осень 2013 лекция 8
C++ осень 2013 лекция 8Technopark
 
SOLID – принципы объектно-ориентированного дизайна
SOLID – принципы объектно-ориентированного дизайнаSOLID – принципы объектно-ориентированного дизайна
SOLID – принципы объектно-ориентированного дизайнаPavel Treshnikov
 
Автоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpАвтоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpGoSharp
 
DDD-secon-2014-tsepkov
DDD-secon-2014-tsepkovDDD-secon-2014-tsepkov
DDD-secon-2014-tsepkovMaxim Tsepkov
 
Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Andrii Gakhov
 
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.C# Desktop. Занятие 01.
C# Desktop. Занятие 01.Igor Shkulipa
 
Прагматичный подход к разработке гибких программных систем
Прагматичный подход к разработке гибких программных системПрагматичный подход к разработке гибких программных систем
Прагматичный подход к разработке гибких программных системAlexander Byndyu
 
Стандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложенияхСтандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложенияхMagecom Ukraine
 

Similar to Design Rules And Principles (20)

Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.
 
Общие темы. Тема 02.
Общие темы. Тема 02.Общие темы. Тема 02.
Общие темы. Тема 02.
 
Автоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpАвтоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharp
 
Как спроектировать хороший API и почему это так важно
Как спроектировать хороший API и почему это так важноКак спроектировать хороший API и почему это так важно
Как спроектировать хороший API и почему это так важно
 
модульное программирование (35)
модульное программирование  (35)модульное программирование  (35)
модульное программирование (35)
 
Software Design Patterns
Software Design PatternsSoftware Design Patterns
Software Design Patterns
 
C# programming
C# programmingC# programming
C# programming
 
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
 
Принципы SOLID
Принципы SOLIDПринципы SOLID
Принципы SOLID
 
Lektsia 5
Lektsia 5Lektsia 5
Lektsia 5
 
C++ осень 2013 лекция 8
C++ осень 2013 лекция 8C++ осень 2013 лекция 8
C++ осень 2013 лекция 8
 
SECON'2014 - Максим Цепков - DDD: от требований до кода
SECON'2014 - Максим Цепков - DDD: от требований до кодаSECON'2014 - Максим Цепков - DDD: от требований до кода
SECON'2014 - Максим Цепков - DDD: от требований до кода
 
SOLID – принципы объектно-ориентированного дизайна
SOLID – принципы объектно-ориентированного дизайнаSOLID – принципы объектно-ориентированного дизайна
SOLID – принципы объектно-ориентированного дизайна
 
Автоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpАвтоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharp
 
DDD-secon-2014-tsepkov
DDD-secon-2014-tsepkovDDD-secon-2014-tsepkov
DDD-secon-2014-tsepkov
 
Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1
 
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.C# Desktop. Занятие 01.
C# Desktop. Занятие 01.
 
Netpeak Talks #3: Масштабируемое приложение на PHP
Netpeak Talks #3: Масштабируемое приложение на PHPNetpeak Talks #3: Масштабируемое приложение на PHP
Netpeak Talks #3: Масштабируемое приложение на PHP
 
Прагматичный подход к разработке гибких программных систем
Прагматичный подход к разработке гибких программных системПрагматичный подход к разработке гибких программных систем
Прагматичный подход к разработке гибких программных систем
 
Стандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложенияхСтандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложениях
 

More from Evgeniy Krivosheev

Points Of View как ключ к общению QAs и инженеров – видим качество за диаграм...
Points Of View как ключ к общению QAs и инженеров – видим качество за диаграм...Points Of View как ключ к общению QAs и инженеров – видим качество за диаграм...
Points Of View как ключ к общению QAs и инженеров – видим качество за диаграм...Evgeniy Krivosheev
 
Архитектура как функция от ?. Что мы не учитываем и убиваем проекты.
Архитектура как функция от ?. Что мы не учитываем и убиваем проекты.Архитектура как функция от ?. Что мы не учитываем и убиваем проекты.
Архитектура как функция от ?. Что мы не учитываем и убиваем проекты.Evgeniy Krivosheev
 
Осознанность рефакторинга: Модель принятия инженерных решений
Осознанность рефакторинга: Модель принятия инженерных решенийОсознанность рефакторинга: Модель принятия инженерных решений
Осознанность рефакторинга: Модель принятия инженерных решенийEvgeniy Krivosheev
 
[Skill trek] type idioms at domain analysis
[Skill trek] type idioms at domain analysis[Skill trek] type idioms at domain analysis
[Skill trek] type idioms at domain analysisEvgeniy Krivosheev
 
[SkillTrek] Бизнес-кейсы
[SkillTrek] Бизнес-кейсы[SkillTrek] Бизнес-кейсы
[SkillTrek] Бизнес-кейсыEvgeniy Krivosheev
 
[SkillTrek] Презентация
[SkillTrek] Презентация[SkillTrek] Презентация
[SkillTrek] ПрезентацияEvgeniy Krivosheev
 
Вебинар "Введение в процесс разработки ПО"
Вебинар "Введение в процесс разработки ПО"Вебинар "Введение в процесс разработки ПО"
Вебинар "Введение в процесс разработки ПО"Evgeniy Krivosheev
 
Введение в веб каркас Struts2
Введение в веб каркас Struts2Введение в веб каркас Struts2
Введение в веб каркас Struts2Evgeniy Krivosheev
 

More from Evgeniy Krivosheev (11)

Points Of View как ключ к общению QAs и инженеров – видим качество за диаграм...
Points Of View как ключ к общению QAs и инженеров – видим качество за диаграм...Points Of View как ключ к общению QAs и инженеров – видим качество за диаграм...
Points Of View как ключ к общению QAs и инженеров – видим качество за диаграм...
 
Архитектура как функция от ?. Что мы не учитываем и убиваем проекты.
Архитектура как функция от ?. Что мы не учитываем и убиваем проекты.Архитектура как функция от ?. Что мы не учитываем и убиваем проекты.
Архитектура как функция от ?. Что мы не учитываем и убиваем проекты.
 
Осознанность рефакторинга: Модель принятия инженерных решений
Осознанность рефакторинга: Модель принятия инженерных решенийОсознанность рефакторинга: Модель принятия инженерных решений
Осознанность рефакторинга: Модель принятия инженерных решений
 
[Skill trek] type idioms at domain analysis
[Skill trek] type idioms at domain analysis[Skill trek] type idioms at domain analysis
[Skill trek] type idioms at domain analysis
 
Design&Process Models
Design&Process ModelsDesign&Process Models
Design&Process Models
 
[SkillTrek] Бизнес-кейсы
[SkillTrek] Бизнес-кейсы[SkillTrek] Бизнес-кейсы
[SkillTrek] Бизнес-кейсы
 
[SkillTrek] Презентация
[SkillTrek] Презентация[SkillTrek] Презентация
[SkillTrek] Презентация
 
Вебинар "Введение в процесс разработки ПО"
Вебинар "Введение в процесс разработки ПО"Вебинар "Введение в процесс разработки ПО"
Вебинар "Введение в процесс разработки ПО"
 
Tdd Workbook
Tdd WorkbookTdd Workbook
Tdd Workbook
 
Введение в веб каркас Struts2
Введение в веб каркас Struts2Введение в веб каркас Struts2
Введение в веб каркас Struts2
 
Tdd Workshop Disscussions
Tdd Workshop DisscussionsTdd Workshop Disscussions
Tdd Workshop Disscussions
 

Design Rules And Principles