Я программировал чуть меньше года и имею некоторый опыт написания системных приложений, веб-приложений и сценариев для предприятий / организаций. Тем не менее, одна вещь, которую я никогда не делал, - это работа с такими фреймворками, как Django, Rails или Zend.
Рассматривая фреймворк Django, я немного расстроен тем, как много абстрагируется в фреймворках. Я понимаю основные цели 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
- чем дольше вы создаете программное обеспечение, тем больше вы будете ценить тратить меньше времени на переосмысление колеса и больше времени дома заниматься любимым делом.