Ваша перспектива може бути перекошена особистим досвідом. Це слизький нахил фактів, які є індивідуально правильними, але отриманий висновок не є, хоча це на перший погляд виглядає правильним.
- Рамки мають більший обсяг, ніж малі проекти.
- Погану практику значно важче подолати у великих кодових базах.
- Побудова рамки (в середньому) вимагає більш кваліфікованого розробника, ніж створення невеликого проекту.
- Краще розробники більше дотримуються належної практики (SOLID).
- Як наслідок, рамки мають більш високу потребу в належній практиці і, як правило, будуються розробниками, які мають більш досвідчений досвід.
Це означає, що при взаємодії з фреймворками та меншими бібліотеками коди належної практики, з якими ви будете взаємодіяти, частіше зустрічаються у більших рамках.
Ця помилка дуже поширена, наприклад, кожен лікар, до якого я лікувався, був зарозумілим. Тому я роблю висновок, що всі лікарі зарозумілі. Ці помилки завжди страждають від того, щоб зробити ковдру засновану на особистому досвіді.
У вашому випадку не виключено, що ви переживали добру практику в більш широких рамках, а не в менших бібліотеках. Ваше особисте спостереження не помиляється, але це анекдотичні докази і не є загальноприйнятими.
2 режими програмування - створення більш-менш того, що задається через вимоги та KISS (типове програмування), або створення дуже загальної та багаторазової логіки, сервісів тощо, які забезпечують гнучкість, яка може знадобитися іншим розробникам (рамкове програмування)
Ви дещо підтверджуєте це тут. Подумайте, що таке рамка. Це не додаток. Це узагальнений "шаблон", який інші можуть використовувати для виготовлення всіляких застосувань. Логічно це означає, що рамка побудована в набагато більш абстрагованій логіці, щоб бути корисною для всіх.
Конструктори фреймворків не здатні приймати ярлики, оскільки вони навіть не знають, які вимоги подаються в наступних програмах. Побудова рамки споконвічно стимулює їх зробити їх код корисним для інших.
Проте, розробники програм мають можливість йти на компроміс з логічною ефективністю, оскільки вони зосереджені на доставці продукту. Їх основна мета - це не робота коду, а досвід користувача.
Щодо основи, кінцевий користувач - це ще один розробник, який взаємодіє з вашим кодом. Якість вашого коду має значення для вашого кінцевого користувача.
Для програми кінцевим користувачем є не розробник, який не буде взаємодіяти з вашим кодом. Якість вашого коду для них не має значення.
Саме тому архітектори команди розробників часто виступають як виконавці належної практики. Вони відсторонені від доставки товару, а це означає, що вони прагнуть розглядати код об'єктивно, а не зосереджуються на доставці самого додатка.
Якщо ви додаєте ці точки введення абстракції, чи дійсно ви виконуюте вимоги користувачів, чи створюєте рамку поверх існуючих фреймворків та технологічних стеків, щоб зробити майбутні доповнення легшими? У якому випадку ви обслуговуєте інтереси замовника чи розробника?
Це цікавий момент, і це (на мій досвід) головна причина, чому люди все ще намагаються виправдати уникнення належної практики.
Підсумовуючи наступні моменти: Пропуск хорошої практики може бути виправданий лише в тому випадку, якщо ваші вимоги (як відомо зараз) незмінні, і ніколи не буде жодних змін / доповнень до кодової бази. Попередження спойлера: Це рідко буває.
Наприклад, коли я пишу 5-хвилинну консольну програму для обробки певного файлу, я не використовую належної практики. Тому що я зараз буду використовувати цей додаток, і його не потрібно оновлювати в майбутньому (було б простіше написати іншу програму, якщо мені потрібна ще раз).
Скажімо, ви можете з нетерпінням скласти додаток за 4 тижні, а ви можете правильно скласти його за 6 тижнів. На перший погляд, соромливо будувати це здається краще. Замовник отримує свою заявку швидше, а компанії доводиться витрачати менше часу на заробітну плату розробника. Виграти / виграти, правда?
Однак це рішення, прийняте без заздалегідь продуманого. Зважаючи на якість кодової бази, внесення значних змін у прискіпливо вбудовану потребуватиме 2 тижні, а внесення змін до правильно складеної - 1 тиждень. Можливо, у майбутньому буде багато цих змін.
Крім того, існує тенденція, щоб зміни несподівано вимагали більше роботи, ніж ви спочатку думали, у невміло побудованих кодових базах, таким чином, швидше за все, підштовхуйте час на розробку до трьох тижнів замість двох.
А також є тенденція витрачати час на полювання на клопів. Це часто трапляється в проектах, де реєстрація була проігнорована через часові обмеження або від небажання її впроваджувати, оскільки ви необачно працюєте, припускаючи, що кінцевий продукт буде працювати так, як очікувалося.
Це навіть не потребує значного оновлення. У мого нинішнього роботодавця я бачив кілька проектів, які були побудовані швидко і брудно, і коли найменшу помилку / зміну потрібно було зробити через неправильну комунікацію в вимогах, це призводить до ланцюгової реакції потреби в модулі рефактора після модуля . Деякі з цих проектів закінчилися руйнуватися (і залишили позаду незрозумілий безлад), перш ніж вони навіть випустили свою першу версію.
Рішення швидкого доступу (швидке та брудне програмування) корисні лише в тому випадку, якщо ви можете безумовно гарантувати, що вимоги є абсолютно правильними і ніколи не потребуватимуть змін. З мого досвіду, я ніколи не стикався з проектом, де це правда.
Вкладення додаткового часу у добру практику - це вкладення коштів у майбутнє. Майбутні помилки та зміни будуть набагато простішими, коли існуюча база даних буде побудована на належній практиці. Це вже буде виплачувати дивіденди після внесення лише двох-трьох змін.