Я програмую трохи менше року і маю певний досвід написання системних додатків, веб-додатків та сценаріїв для підприємств / організацій. Однак одне, чого я ніколи не робив, - це робота з такою рамкою, як Django, Rails або Zend.
Переглядаючи рамки Джанго, я трохи засмучений тим, наскільки сильно відібраний у рамки. Я розумію основні цілі DRY та мінімального коду, але дещо з цієї надмірної залежності від різних модулів та важкої абстракції основних функцій відчуває себе так:
Робить програми датуванням дуже швидко через постійно мінливий характер модулів / рамок,
Робить код важко зрозумілим через безліч доступних фреймворків та модулів та всіх їхніх ідіосинкразій,
Робить код менш логічним, якщо ви не прочитали всю документацію; тобто я можу прочитати деякі розуміння списку та умовної логіки та зрозуміти, що робить програма, але коли ви бачите функції, які потребують передачі у довільних рядках та словниках, щось стає важко зрозуміти, якщо ви вже не гуру в заданий модуль; і:
Складно перемикати між структурами важко і нудно. Переключення між мовами - це вже складна задача, але це керовано, якщо ви досить добре розумієте їх основні функціональні можливості / філософію. Переключення між рамками, здається, є більшою мірою запам'ятовуванням підрядних каналів, що певним чином спонукає до неефективності цих фреймворків.
Чи дійсно нам потрібно розміщувати як 50 шарів абстракції поверх чогось такого простого, як запит MySQL? Чому б не використати щось на зразок інтерфейсу PDO для PHP, де обробляються підготовлені оператори / вхідні тестування, але універсально зрозумілий SQL-запит все ще є частиною функції?
Чи справді ці абстракції корисні? Невже функція "блат" не робить їх марними, робить додатки складнішими порівняно з аналогічними програмами, написаними без використання рамки?
Do we really need to put like 50 layers of abstraction on top of something as simple as a MySQL query?
- По-перше, хороший фреймворк - це один шар абстракції (можливо, 2 або 3 внутрішньо), по-друге, "щось таке просто, як запит MySQL" насправді включає в себе добрий десяток абстракцій. Навіть після того, як запит, який ви виконуєте зі своєї інтерпретованої мови, перейшов на сервер бази даних, у вас все ще виникають запити щодо баз даних над двигунами над файловими системами на фізичному зберіганні. Отже, коротше: так, нам потрібні абстракції, оскільки вони не дають нам вибухати.
as a relatively inexperienced programmer
- чим довше ви робите програмне забезпечення, тим більше ви будете цінувати, витрачаючи менше часу на винахід колеса та більше часу вдома, роблячи речі, які вам подобаються.