Я, як правило, найбільше працюю з веб-додатками, і хоча я намагаюся бути загальним, моя відповідь може не стосуватися вашої області програмування.
Я також збираюся використовувати "фреймворк", синонімічний з "бібліотека".
Перш ніж реалізувати рамку, слід розглянути кілька речей, ось кілька загальних прикладів.
№1. Чи заощадить рамки час та зусилля?
Відповідь на це питання майже завжди - так . Рамки, як правило, будуються для вирішення конкретних проблем та їх вирішення дуже добре. Наприклад, такі структури, як EntityFramework, можуть повністю врятувати вас від написання SQL-коду. Що може бути фантастично, якщо ваша команда програмування не вільно володіє SQL.
Каркаси побудовані або, а) додати програміст зручного інтерфейсу до іншого складним компонентам або б) додати абстракцію вже добре відомо (або встановленої) компонента.
Останні (або навіть перші в деяких випадках) насправді можуть стати на шляху розвитку. Особливо це стосується, коли ви або ваша команда програмування збираєтеся реалізувати нові рамки, в яких вони ніколи раніше не працювали.
Це потенційно може уповільнити ваш процес розробки, що може бути дорогим.
№2 Масштаб вашої заявки
Кажуть, що "все, що варто робити, варто перестаратися" , але зазвичай це не так. Напевно, немає вагомих причин застосовувати рамки надмірного розміру, якщо суть вашої заявки полягає у друкуванні "картоплі" .
Коли ви розробляєте додаток (будь то веб-, настільний, мобільний або будь-який інший можливий тип додатків) - якщо ви вважаєте, що розмір вашої рамки "гномів" вашої (можливо, майбутньої) реалізації цього, то це може бути великим попереджувальний знак, що ваша рамка може просто роздути вашу програму. Хорошим анекдотом було б, якби ви включили jQuery, просто додати «завантажений» -клас до свого тегу body, коли документ буде готовий. Робити це за допомогою просто рідного JavaScript може бути трохи складніше , але це не роздуває вашу програму.
З іншого боку, якщо фреймворк виконує багато брудної роботи зсередини (тобто рамки бази даних), то це може бути реально реалізувати, навіть якщо ви лише "частково" використовуєте фреймворк. Хорошим анекдотом було б не намагатися створити власний драйвер ADO.NET або MongoDB, тільки тому, що вам не потрібно використовувати всю бібліотеку.
Іноді рамки поставляються з відкритим кодом (і з ліцензіями "робити все, що ти хочеш"). Це відкриває нову можливість, коли команда програмування може вибрати лише частини фреймворку.
Це врешті-решт повертається до питань №1 та №3.
№3 Вплив.
Іноді реалізація рамки може безпосередньо впливати на кінцевого користувача. Це особливо стосується веб-додатків, оскільки наявність великих кадрів на стороні клієнта може негативно вплинути на роботу кінцевого користувача. Користувачі з повільнішими машинами можуть відчувати повільну візуалізацію, проблеми з роботою з javascript або подібні проблеми, викликані машинами під номіналом. Користувач із повільними зв’язками може відчувати повільний (принаймні початковий) час завантаження.
Навіть в інших програмах типу кінцеві користувачі можуть негативно впливати на ваші додатки. Рамки принаймні завжди займають деяке місце на диску, і якщо ви розробляєте мобільний додаток (або навіть настільний додаток), це може знадобитися до уваги.
Рамки на стороні сервера (ще більш конкретні для Інтернету), швидше за все, не вплинуть на ваших кінцевих користувачів, але це вплине на вашу інфраструктуру . Деякі рамки мають самі залежності, які можуть зажадати від вас перезапустити веб-сервер, або лише сервіс або сервер повністю.
Деякі структури можуть також бути дуже ресурсозберігаючої важкою.
Звичайно, це пов'язано з пунктами №1 та №2.
Це все лише велике «коло міркувань», і немає реального наукового методу для вирішення питання про те, чи слід реалізувати рамки чи ні.
Корбін Марч дуже добре підсумував це:
Групи, з якими я працював, роблять те саме: гадають про витрати та вигоди, вибирають найпродуктивніший маршрут та сподіваються, що вони вірні. Це не страшно науково - одна частина інтуїції, досвід роботи з трьох частин, одна сприйнятливість до маркетингу, одна частина хитра і п'ять частин оцінюють думку.
Також важливо не бути елітарним . Рамки - це інструменти, які призначені для використання. Я знаю людей обох крайнощів; з одного боку у вас є хлопець, який робить життя дуже важким для себе, а з іншого - ти хлопець, який створює повільні, роздуті програми.
Усі рамки мають випадки використання, це лише питання їх реалізації у правильних цілях.