Навіщо потрібні фреймворки та бібліотеки

Навіщо потрібні фреймворки та бібліотеки

Як спростити розробку.

Робота з бібліотеками та фреймворками — базова навичка для девелопера. Хоча обидва інструменти допомагають будувати архітектуру програм, а розробники часто використовують їх як синоніми, між ними є відмінності.

Пояснюємо, що вибрати для вирішення ваших завдань.

«Чужий» код

І фреймворки, і бібліотеки — це код, який до вас написав інший розробник. Цей код використовують, коли розв’язують однотипні завдання чи поширені проблеми.

Принцип розробки програмного забезпечення DRY (Don't repeat yourself) радить не дублювати код, який використовується багато разів. Наприклад, вам потрібно обробляти рядки. Для цього ви застосували функцію додавання великої літери до кожного нового рядка. Записавши функцію, ви створили невелику власну бібліотеку.

Що таке бібліотека

Бібліотека — це набір функцій, які розв’язують конкретне завдання в програмі. Вона може використовувати шаблони повідомлень, раніше скомпільований код, класи або підпрограми — і використовуватися багато разів. У мовах програмування є стандартні бібліотеки, але розробник може створити свою.

Класи та методи, з якими працює бібліотека, визначають, для чого вона використовується. Наприклад, математичні бібліотеки дають змогу розробникам робити обчислення, просто викликавши функцію й не вивчаючи, як працює цей алгоритм у програмі. Доступ до бібліотек зазвичай реалізовано за допомогою API.

Тут ми розповідаємо про Pillow — бібліотеку для обробки графіки на Python.

Що таке фреймворк

Фреймворк — це теж фрагмент коду, але його завдання — визначити, як структурувати та виконувати програму. Він вимагає задати архітектуру програми — наприклад, дизайн програми та інтерпретацію коду. Фреймворк — «каркас» вашої програми. Фреймворки зазвичай створюють професійні команди розробників у великих корпораціях (на зразок Google).

Наприклад, фреймворк AngularJS застосовують для створення вебзастосунків. Він заснований на HTML і JavaScript та задає базові параметри для проєкту: розмітку сторінки для десктопної та мобільної версії, синхронізацію з даними сервера, синтаксис шаблону та кросплатформність сторінки (однакове відображення на Android та iOS). Щоби розширити функціонал, до вебсайту на базі Angular можна підключити одну або кілька бібліотек. Але підключити Angular до іншого фреймворку неможливо, оскільки фреймворк визначає, як запускати код на сайті.

Використання фреймворків та бібліотек часто пояснюють за аналогією з будівництвом будинку. Фреймворк — це будівельна компанія, яка має кілька готових проєктів будинків. А бібліотеки — робочі інструменти (як дриль чи лобзик), які можна застосувати на власний розсуд.

Чим фреймворки відрізняються від бібліотек

Бібліотека підключається до вашого коду, а він — до фреймворку. Основна відмінність фреймворку від бібліотеки в тому, хто контролює процес розробки. Програміст звертається до бібліотеки за бажанням. У такому разі він відповідає за потік виконання програми та послідовність виконання команд. При використанні фреймворку ролі змінюються. Фреймворк сам викликає ваш код і надає простір для додавання деталей. Тому таку відмінність називають інверсією управління.

Спрощено це можна так:

  • Бібліотека: задайте нам команду, щоби виконати роботу.
  • Фреймворк: не ставте команду, ми задамо команду вам.

У програмуванні існує суб’єктивний параметр — «упертість» бібліотек та фреймворків. Це рівень свободи розробника під час структурування коду.

Саме через інверсію контролю фреймворки більш уперті та здатні більше автоматизувати розробку. Вони самостійно ухвалюють рішення щодо написання коду. Наприклад, фреймворк допомагає створювати форми авторизації, таблиці або автоматично генерує верстку. Деякі фреймворки навіть задають розташування або назви файлів.

Такий підхід називається convention over configuration (угода конфігурації). У ньому розробнику не потрібно налаштовувати більшість параметрів програми.

У різних фреймворків — різний ступінь «упертості».

Наприклад, фреймворк Ruby on Rails (RoR) мови Ruby називають дуже впертим. Коли ви робите новий проєкт на RoR, він одразу створює папки та файли з великою кількістю коду. Наприклад, коли ви створюєте модель User, фреймворк очікує, що вона буде прив’язана до UsersController. Завдяки заздалегідь написаному коду, Rails у фоновому режимі з’єднує моделі та контролери.

Порівняємо цей підхід із використанням Chart.js — бібліотеки, яка створює діаграми JavaScript. Ви визначаєте, де й коли викликати Chart.js, але вам потрібно вказати тип діаграм, кольору та кордону. Бібліотека є відповідальною лише за інформацію для діаграм.

Хороші фреймворки легко розширити. Вони забезпечують базовий функціонал розробки програми, але залишаються відкритими змін. Фреймворки генерують багато коду, який розробник зазвичай не змінює.

Використовуючи бібліотеку, ви повинні розуміти, що робить кожен із методів. Фреймворки вимагають від розробника застосовувати конкретну парадигму програмування (функціональну, декларативну, імперативну) і розуміти логіку процесів. Тому вивчення фреймворків займає більше часу, але вони надають можливість створити цілий проєкт або його прототип.

Універсальної відповіді, коли краще застосовувати фреймворк, а коли бібліотеку, не існує. Але якщо на проєкті ви використовуєте фреймворк, краще застосовувати його для розв’язання завдань. Бібліотека знадобиться, якщо функцій фреймворку недостатньо або ви маєте просунуті навички роботи з бібліотекою і ви хочете розв’язати завдання нестандартним способом.

Ще статті
Як працювати з даними: фахівці діляться досвідом.
Розробники радять Telegram- та YouTube-канали, книги та блоги.