Розробляючи систему чи додаток, який ви плануєте використовувати з певним фреймворком, чи найкраща практика проектувати систему без фреймворку на увазі, чи краще проектувати систему з розумом "добре, що рамки мали б простіший час з цим".
Розробляючи систему чи додаток, який ви плануєте використовувати з певним фреймворком, чи найкраща практика проектувати систему без фреймворку на увазі, чи краще проектувати систему з розумом "добре, що рамки мали б простіший час з цим".
Відповіді:
Ваш дизайн повинен максимально відповідати потребам клієнтів. Пам'ятайте, що дизайн включає такі дрібниці, як:
Жодна з цих речей не повинна диктуватися рамками. Якщо зрозуміло, що ви будете боротися зі своєю основою для досягнення цих цілей, тоді ви вибираєте новий фреймворк, який допоможе вам досягти цих цілей, перш ніж починати писати код.
Вибравши відповідний набір інструментів (рамка - це інструмент), я рекомендую використовувати інструменти так, як вони призначені для використання. Чим далі ви відхиляєтесь від дизайну рамки, тим більше ви збільшуєте криву навчання для своєї команди і тим більше шансів, що щось піде не так.
Коротко
Подальші думки:
Після 20+ років інженерії програмного забезпечення та використання декількох рамок я засвоїв пару уроків. Усі рамки є двогранним мечем: вони і стримують, і дозволяють. Проблема з вирішенням вашої основи, перш ніж дивитися на велику 3, про яку я згадував вище, полягає в тому, що ви можете порушити хороший досвід користувача для посереднього (у кращому випадку). Або ви, можливо, будете змушені відходити від дизайну рамки, щоб досягти певної функціональності.
Рамки природно впливають на дизайн конкретних модулів та підсистем (таких як інтерфейс GUI). Як згадується в іншій відповіді, вам буде важко, якщо ви опинитеся на боротьбі з обраними рамками.
Однак, ширше, вам слід уникати того, щоб якийсь єдиний фреймворк чи технологія диктували чи керували «великою картиною» вашої загальної архітектури системи. Більшість рамок прикладних програм загального призначення не заохочують це, тому якщо ви виявите, що ви пишете всю свою систему навколо однієї рамки, то, ймовірно, ви робите те, чого автори цієї рамки не мали наміру.
Ви, ймовірно, використовуєте багато різних рамок для вирішення різних проблем; Оскільки ваша система стає складнішою, ви повинні бути обережними, щоб не створити Велику кульку бруду . Де це можливо, тримайте систему модульною і нещільно пов'язаною. Деякі рамки можуть бути краще зберегти за абстракціями, написавши обгортки та адаптери, які "приховують" робочі потоки, що стосуються рамки, від інших компонентів. Набори інструментів GUI, як правило, обслуговують лише функціональний інтерфейс GUI, тому ці модулі GUI слід тримати подалі від решти системи.
Рамки загального призначення (такі як фреймворки інтерфейсу, рамки рівня даних тощо) не існують, щоб прописати повну архітектуру вашої системи - щонайбільше вони можуть прописати дизайн компонента або модуля; наприклад, деякі технології GUI орієнтовані на конкретні схеми MV *.
Загальна архітектура вашої системи повинна орієнтуватися насамперед на ваші бізнес-вимоги . Ви можете сильно опиратися на певний інструмент (наприклад, інструмент проміжного програмного забезпечення для обміну повідомленнями або рамку ORM), щоб зв'язати все разом, але якщо ви зафіксували рамку в абстракції, такому як клас "служби", менше шансів на те, що ви будете обмежені цією рамкою, коли зіткнетеся з її обмеженнями.
Спробуйте пам’ятати про наступне для вашого дизайну великих зображень:
Так, ви повинні якомога ближче дотримуватися того, що рамки "підказують" вам робити.
Причина полягає лише в тому, що чим ближче дотримуватись способу "мислення", тим легше ви зможете поговорити з іншими розробниками щодо ваших проблем / ідей, які також використовують цей фреймворк.
Ви збільшуєте сумісність та зручність використання для інших людей, які згодом її використовують, ви краще зрозумієте та включите підручники або загальні рішення, якщо будете дотримуватися основної філософії того, що ви використовуєте.
Єдина вагома причина, з якої я можу подумати, чому ви "зламаєте" рамки, - це те, що вам абсолютно потрібно щось, чого він не може забезпечити, враховуючи його "за замовчуванням" конфігурацію / застосування принципів. Але тоді це може бути не правильною основою для початку.
В основному, це може стосуватися і інших рішень. Ви повинні використовувати мову , який ви використовуєте так близько , як це передбачається використовувати, тому що це робить речі простіше , якщо ви говорите однією мовою , як і всі інші.