Бібліотека чи свій код

Бібліотека чи свій код

  • 27 квітня, 2023
  • читати 10 хв
Володимир Шайтан
Володимир Шайтан Technical Lead у Zoot, Викладач Комп'ютерної школи Hillel.

Що таке бібліотека в програмуванні

У програмуванні бібліотека (Library) — це колекція вже написаного коду, який розробники можуть використовувати повторно у програмах без необхідності писати цей код заново.

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

«Для чого існують бібліотеки?» — це питання, яке часто ставлять розробники.

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

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

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

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

Рекомендуємо публікацію по темі

Мені потрібна лише одна функція

Якщо вам потрібна лише одна функція з бібліотеки, її можна написати самостійно. Це може бути ефективнішим рішенням, ніж підключення всієї бібліотеки заради однієї функції.

Однак, варто враховувати, що такі бібліотеки, як lodash містять безліч оптимізованих функцій, які можуть працювати швидше та краще, ніж самописні рішення. Крім того, використання бібліотеки може спростити код і зробити його більш читабельним.

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

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

Загалом вибір між написанням функції самостійно та використанням бібліотеки залежить від конкретної ситуації та вимог проєкту.

Розмір коду

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

Однак, слід пам'ятати, що бібліотеки, навіть із простою функціональністю, можуть займати багато місця. На фронтенді це може бути особливо критично, але все залежить від того, як організовано бібліотеку. Якщо правильно налаштовано експорт, то в кінцевому варіанті будуть доступні ті функції, які реально використовуються, що допоможе зменшити розмір бібліотеки.

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

Залежності

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

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

Отже, під час роботи над проєктами необхідно враховувати конкретні вимоги та завдання, а також правильно вибирати та використовувати сторонні бібліотеки. Це дозволить прискорити процес розробки та створити якісне програмне забезпечення.

У чому переваги?

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

Зазвичай, коли потрібна одна функція, незабаром стає необхідна та інша. Якщо не зважати на це, одна людина напише одну функцію, а інша напише її в іншому місці, і немає навіть впевненості, що вони знають про рішення один одного. Ця ситуація швидко перетворюється з «надто рано» на «надто пізно», коли в коді багато функцій, доступних у кожній бібліотеці. Коли програмісти переходять в інші проєкти, те саме починається і там. Результатом є стандартні функції, розкидані різними проєктами, написані різними людьми, що містять помилки, які не мають документації і, як правило, погано тестуються або не тестуються зовсім.

Ваш особистий код не буде ретельно протестований і задокументований, як у відомих бібліотеках. Якщо відкрити lodash, можна побачити, наскільки докладна та широка її документація. Це ще одна перевага використання таких бібліотек. Так як вони широко використовуються і стандартизовані, більшість розробників знайомі з ними і вміють з ними працювати. Це означає, що код проєкту буде зрозумілим усім, хто з ним працює.

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

Для інших рідкісних бібліотек ситуація складніша, і не завжди зрозуміло, чи потрібно їх використовувати.

Важливо приймати рішення з урахуванням реалістичності, а не завершеності.

Рекомендуємо курс по темі