Зачем нужны фреймворки и библиотеки

Зачем нужны фреймворки и библиотеки

Как упростить разработку.

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

Объясняем, что выбрать для решения ваших задач.

«Чужой» код

И фреймворки, и библиотеки — это код, который до вас написал другой разработчик. Этот код используют, когда решают однотипные задачи или распространенные проблемы.

Принцип разработки программного обеспечения 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, но вам нужно указать тип диаграмм, цвета и границы. Библиотека ответственна только за информацию для диаграмм.

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

Используя библиотеку, вы должны понимать, что делает каждый из методов. Фреймворки же требуют от разработчика применять конкретную парадигму программирования (функциональную, декларативную, императивную) и понимать логику процессов. Поэтому изучение фреймворков занимает больше времени, но они предоставляют возможность сделать целый проект или его прототип.

Универсального ответа, когда лучше применять фреймворк, а когда — библиотеку, не существует. Но если на проекте вы используете фреймворк, то лучше применять его для решения задач. Библиотека понадобится, если функций фреймворка недостаточно или у вас продвинутые навыки работы с библиотекой и вы хотите решить задачу нестандартным способом.

Ещё статьи
Платформи для волонтерів, пошук житла, корисні карти та ігри.