Принципы
программирования
Web Test Framework с нуля [PRO]
NoBugs
Как писать чистый код?
2
Использовать принципы
программирования!
3
4
ШАГ 1: ПРИНЦИП ПРОГРАММИРОВАНИЯ
Принцип
программирования — это
основная идея или правило, которое
помогает программистам писать код,
который является более надежным,
эффективным, читаемым и удобным
для поддержки.
5
ШАГ 2: DRY - DO NOT REPEAT YOURSELF
Не повторяй себя
Когда применять:
Когда обнаруживается
дублирование кода.
Как применять:
Избегайте дублирования логики или
данных, используя абстракции, функции,
классы или наследование для общего
использования кода.
6
ШАГ 2: DRY - DO NOT REPEAT YOURSELF
ДО ПОСЛЕ
7
ШАГ 3: KISS - KEEP IT SIMPLE STUPID
Делай вещи проще
Когда применять:
Когда хочется усложнить решения,
но объективных причин для этого нет.
Как применять:
Стремитесь к простоте во всём.
Избегайте ненужной сложности в коде.
8
ШАГ 3: KISS - KEEP IT SIMPLE STUPID
ДО
ПОСЛЕ
9
ШАГ 4: YAGNI- You Ain't Gonna Need It
Вам это не понадобится
Когда применять:
При добавлении новой функциональности.
Как применять:
Не добавляйте функциональность,
пока она действительно не нужна.
Сосредоточьтесь на текущих требованиях.
10
ШАГ 4: YAGNI- You Ain't Gonna Need It
ДО
ПОСЛЕ
11
ШАГ 5: OOP - ENCAPSULATION
Инкапсуляция
Когда применять:
Когда стоит вопрос о доступе
к данным или методам.
Как применять:
Скрывайте все данные от модификаций и
чтения, если условия задачи не требуют
обратного.
12
ШАГ 5: OOP - ENCAPSULATION
API
UI
13
ШАГ 5: OOP - INHERITANCE
Наследование
Когда применять:
Когда разные компоненты имеют общую
функциональность,
которую можно извлечь в базовый класс.
Как применять:
Создавайте общие базовые классы, которые
предоставляют повторно используемую
функциональность для производных классов.
14
ШАГ 5: OOP - INHERITANCE
API
15
ШАГ 5: OOP - INHERITANCE
UI
16
ШАГ 5: OOP - POLYMORPHISM
Полиморфизм
Когда применять:
Когда код должен работать с объектами,
которые имеют разные формы поведения,
но могут быть обработаны через один
интерфейс.
Как применять:
Определите интерфейсы или абстрактные
классы, которые позволяют использовать
различные реализации в общем контексте.
17
ШАГ 5: OOP - POLYMORPHISM
ДО
18
ШАГ 5: OOP - POLYMORPHISM
ПОСЛЕ
19
ШАГ 5: OOP - ABSTRACTION
Абстракция
Когда применять:
Когда необходимо скрыть сложные детали
реализации и представить простой интерфейс
для взаимодействия с системой.
Как применять:
Определяйте общие интерфейсы или
абстрактные классы, которые выделяют
общие характеристики объектов, упрощая при
этом сложные системы и снижая зависимость
от конкретных реализаций.
20
ШАГ 5: OOP - ABSTRACTION
21
ШАГ 6: SOLID - Single Responsibility
Принцип единственной
ответственности
Когда применять:
Когда класс или метод пытается
решить несколько задач.
Как применять:
Ограничьте каждый класс или метод
одной функцией или ответственностью.
22
ШАГ 6: SOLID - Single Responsibility
ДО ПОСЛЕ
23
ШАГ 6: SOLID - Open/Closed
Принцип
открытости/закрытости
Когда применять:
При проектировании кода.
Как применять:
Разрабатывайте системы так, чтобы они
были открыты для расширения,
но закрыты для модификации.
24
ШАГ 6: SOLID - Open/Closed
ДО
25
ШАГ 6: SOLID - Open/Closed
ПОСЛЕ
26
ШАГ 6: SOLID - Liskov Substitution
Принцип подстановки
Барбары Лисков
Когда применять:
При работе с наследованием.
Как применять:
Объекты в программе должны быть
заменяемыми на объекты их подтипов без
изменения желаемых свойств программы.
27
ШАГ 6: SOLID - Liskov Substitution
ДО
ПОСЛЕ
28
ШАГ 6: SOLID - Interface Segregation
Принцип разделения
интерфейса
Когда применять:
Когда один интерфейс выполняет
слишком много функций.
Как применять:
Разделяйте интерфейсы на более мелкие и
специфичные, чтобы их реализующие классы
не имплементировали методы, которые они
не будут использовать.
29
ШАГ 6: SOLID - Interface Segregation
ДО
ПОСЛЕ
30
ШАГ 6: SOLID - Dependency Inversion
Принцип инверсии
зависимостей
Когда применять:
При проектировании взаимодействий между
компонентами или слоями программы.
Как применять:
Модули высокого уровня не должны зависеть
от модулей низкого уровня. Оба типа
модулей должны зависеть от абстракций.
31
ШАГ 6: SOLID - Dependency Inversion
ДО
ПОСЛЕ
32
ШАГ 7: Low Coupling / High Cohesion
Низкая связанность /
Высокая связность
Когда применять:
Высокая связность: При создании модулей,
чтобы каждый из них решал только одну
задачу.
Низкая связанность: При проектировании
тестов для обеспечения их независимости и
уменьшения взаимного влияния.
33
ШАГ 7: Low Coupling / High Cohesion
ДО ПОСЛЕ
Принципы
программирования
34
МАТЕРИАЛЫ
К
ЧТЕНИЮ
Принципы программирования:
35
СЕГОДНЯ
МЫ
УЗНАЛИ
Шаг 1: Принципы программирования
Шаг 2: DRY
Шаг 3: KISS
Шаг 4: YAGNI
Шаг 5: OOP
Шаг 6: SOLID
Шаг 7: Low Coupling / High Cohesion
ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ
ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛ
АЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПО
ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ
И ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГН
НАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ П
ОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ
ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ
АЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПО
ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ
ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛ
АЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПО
ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ
И ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГН
ПОГНАЛИ!

Принципы программирования [NoBugs WTF PRO уровень].pdf

  • 1.
  • 2.
  • 3.
  • 4.
    4 ШАГ 1: ПРИНЦИППРОГРАММИРОВАНИЯ Принцип программирования — это основная идея или правило, которое помогает программистам писать код, который является более надежным, эффективным, читаемым и удобным для поддержки.
  • 5.
    5 ШАГ 2: DRY- DO NOT REPEAT YOURSELF Не повторяй себя Когда применять: Когда обнаруживается дублирование кода. Как применять: Избегайте дублирования логики или данных, используя абстракции, функции, классы или наследование для общего использования кода.
  • 6.
    6 ШАГ 2: DRY- DO NOT REPEAT YOURSELF ДО ПОСЛЕ
  • 7.
    7 ШАГ 3: KISS- KEEP IT SIMPLE STUPID Делай вещи проще Когда применять: Когда хочется усложнить решения, но объективных причин для этого нет. Как применять: Стремитесь к простоте во всём. Избегайте ненужной сложности в коде.
  • 8.
    8 ШАГ 3: KISS- KEEP IT SIMPLE STUPID ДО ПОСЛЕ
  • 9.
    9 ШАГ 4: YAGNI-You Ain't Gonna Need It Вам это не понадобится Когда применять: При добавлении новой функциональности. Как применять: Не добавляйте функциональность, пока она действительно не нужна. Сосредоточьтесь на текущих требованиях.
  • 10.
    10 ШАГ 4: YAGNI-You Ain't Gonna Need It ДО ПОСЛЕ
  • 11.
    11 ШАГ 5: OOP- ENCAPSULATION Инкапсуляция Когда применять: Когда стоит вопрос о доступе к данным или методам. Как применять: Скрывайте все данные от модификаций и чтения, если условия задачи не требуют обратного.
  • 12.
    12 ШАГ 5: OOP- ENCAPSULATION API UI
  • 13.
    13 ШАГ 5: OOP- INHERITANCE Наследование Когда применять: Когда разные компоненты имеют общую функциональность, которую можно извлечь в базовый класс. Как применять: Создавайте общие базовые классы, которые предоставляют повторно используемую функциональность для производных классов.
  • 14.
    14 ШАГ 5: OOP- INHERITANCE API
  • 15.
    15 ШАГ 5: OOP- INHERITANCE UI
  • 16.
    16 ШАГ 5: OOP- POLYMORPHISM Полиморфизм Когда применять: Когда код должен работать с объектами, которые имеют разные формы поведения, но могут быть обработаны через один интерфейс. Как применять: Определите интерфейсы или абстрактные классы, которые позволяют использовать различные реализации в общем контексте.
  • 17.
    17 ШАГ 5: OOP- POLYMORPHISM ДО
  • 18.
    18 ШАГ 5: OOP- POLYMORPHISM ПОСЛЕ
  • 19.
    19 ШАГ 5: OOP- ABSTRACTION Абстракция Когда применять: Когда необходимо скрыть сложные детали реализации и представить простой интерфейс для взаимодействия с системой. Как применять: Определяйте общие интерфейсы или абстрактные классы, которые выделяют общие характеристики объектов, упрощая при этом сложные системы и снижая зависимость от конкретных реализаций.
  • 20.
    20 ШАГ 5: OOP- ABSTRACTION
  • 21.
    21 ШАГ 6: SOLID- Single Responsibility Принцип единственной ответственности Когда применять: Когда класс или метод пытается решить несколько задач. Как применять: Ограничьте каждый класс или метод одной функцией или ответственностью.
  • 22.
    22 ШАГ 6: SOLID- Single Responsibility ДО ПОСЛЕ
  • 23.
    23 ШАГ 6: SOLID- Open/Closed Принцип открытости/закрытости Когда применять: При проектировании кода. Как применять: Разрабатывайте системы так, чтобы они были открыты для расширения, но закрыты для модификации.
  • 24.
    24 ШАГ 6: SOLID- Open/Closed ДО
  • 25.
    25 ШАГ 6: SOLID- Open/Closed ПОСЛЕ
  • 26.
    26 ШАГ 6: SOLID- Liskov Substitution Принцип подстановки Барбары Лисков Когда применять: При работе с наследованием. Как применять: Объекты в программе должны быть заменяемыми на объекты их подтипов без изменения желаемых свойств программы.
  • 27.
    27 ШАГ 6: SOLID- Liskov Substitution ДО ПОСЛЕ
  • 28.
    28 ШАГ 6: SOLID- Interface Segregation Принцип разделения интерфейса Когда применять: Когда один интерфейс выполняет слишком много функций. Как применять: Разделяйте интерфейсы на более мелкие и специфичные, чтобы их реализующие классы не имплементировали методы, которые они не будут использовать.
  • 29.
    29 ШАГ 6: SOLID- Interface Segregation ДО ПОСЛЕ
  • 30.
    30 ШАГ 6: SOLID- Dependency Inversion Принцип инверсии зависимостей Когда применять: При проектировании взаимодействий между компонентами или слоями программы. Как применять: Модули высокого уровня не должны зависеть от модулей низкого уровня. Оба типа модулей должны зависеть от абстракций.
  • 31.
    31 ШАГ 6: SOLID- Dependency Inversion ДО ПОСЛЕ
  • 32.
    32 ШАГ 7: LowCoupling / High Cohesion Низкая связанность / Высокая связность Когда применять: Высокая связность: При создании модулей, чтобы каждый из них решал только одну задачу. Низкая связанность: При проектировании тестов для обеспечения их независимости и уменьшения взаимного влияния.
  • 33.
    33 ШАГ 7: LowCoupling / High Cohesion ДО ПОСЛЕ
  • 34.
  • 35.
    Принципы программирования: 35 СЕГОДНЯ МЫ УЗНАЛИ Шаг 1:Принципы программирования Шаг 2: DRY Шаг 3: KISS Шаг 4: YAGNI Шаг 5: OOP Шаг 6: SOLID Шаг 7: Low Coupling / High Cohesion
  • 36.
    ГНАЛИ ПОГНАЛИ ПОГНАЛИПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛ АЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПО ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ И ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГН НАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ П ОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ АЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПО ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛ АЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПО ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ И ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГН ПОГНАЛИ!