Парадигма програмування

명령형 프로그래밍: How

선언형 프로그래밍: What

1. OOP

Об'єкт: має стан і поведінку

Властивості об'єкта: стан об'єкта (Knowing), поведінка об'єкта (Doing)

Doing обробляє стан Knowing або змінює його

SOLID:

  • SRP(Single Responsibility Principle): принцип єдиної відповідальності
  • OCP(Open/Closed Principle): принцип відкритості/закритості
  • LSP(Liskov Substitution Principle): принцип заміщення Ліскова
  • ISP(Interface Segregation Principle): принцип розподілу інтерфейсів
  • DIP(Dependency Inversion Principle): принцип інверсії залежностей

Інкапсуляція: приховування реалізації об'єкта від зовнішнього світу

  • Ключове: збереження цілісності та послідовності об'єкта
  • Цілісність: дані об'єкта не повинні бути пошкоджені, вони завжди повинні бути в правильному стані
  • Дані об'єкта мають бути приватними, а їх зміна має здійснюватися через методи або геттер/сеттер!
  • Послідовність: об'єкт повинен завжди перебувати в передбачуваному стані, що відповідає правилам системи

Наслідування: можливість визначати нові класи, використовуючи існуючі

Переваги: збільшення повторного використання коду, можливість реалізації поліформізму через переозначення

Недоліки: порушення інкапсуляції, погане використання переозначення може порушити LSP. Тісна взаємозалежність між класами може знизити гнучкість і розширюваність

Абстракція: процес перетворення складних функцій на простіші

Поліформізм: здатність методів з однаковими іменами поводитись по-різному залежно від об'єкта

ПОРАДА:

  • Реалізуйте через класи для наслідування (BV, BVC)
  • Використовуйте наслідування лише у випадках чітко визначених відносин "has-a"
  • У батьківських класах реалізовуйте тільки необхідні функції

2. POP

Парадигма, яка виникла для вирішення недоліків OOP

  • Можливість приховування через private
  • Легкість спільного використання даних між об'єктами
  • Сумісність з існуючими фреймворками (UIKit)

3. FP

Парадигма, яка розділяє процес зміни стану та його відсутність

- Дія: також відома як побічний ефект, функція, результат якої змінюється в залежності від часу виконання та кількості викликів

Наприклад) Отримання даних з бази даних, звертання до внутрішніх змінних тощо

Ключове в дії: все, що впливає на зовнішній світ або залежить від нього

- Обчислення: також відоме як чиста функція, функція, яка завжди дає однаковий результат при однакових вхідних даних

Наприклад) функції вищих порядків, такі як map, filter, reduce, логіка аутентифікації користувача тощо

- Дані: факти, які записуються у відповідь на події

=> Парадигма, яка розділяє дію та обчислення

  • Розділяйте методи для дії та обчислення!
  • Використовуйте Copy On Write для копіювання параметрів або значень!
  • Розглядайте можливість розділення дії та обчислення, якщо вони змішані в одній функції!

==>> Ключове: мінімізувати дії та якнайбільше використовувати обчислення і дані!

Мультіпарадигмальні мови програмування

Кожна мова прагне об'єднати переваги різних парадигм програмування!

Наприклад) BVC, використання функцій вищих порядків (map, filter, reduce) в одному контексті

=> Важливо не те, який конкретний підхід є кращим або гіршим, а те, як використовувати ці концепції у відповідних ситуаціях!

Перекладено з: Programming Paradigm

Leave a Reply

Your email address will not be published. Required fields are marked *