Je programme depuis un peu moins d'un an et j'ai une certaine expérience dans l'écriture d'applications système, d'applications Web et de scripts pour les entreprises / organisations. Cependant, une chose que je n'ai jamais vraiment fait est de travailler avec un framework comme Django, Rails ou Zend.
En regardant par-dessus le framework Django, je suis un peu frustré par la quantité d'abstraction dans les frameworks. Je comprends les objectifs principaux de DRY et du code minimal, mais une partie de cette dépendance excessive à différents modules et à une abstraction lourde des fonctions de base en a l'air:
Rend les programmes datés très rapidement en raison de la nature en constante évolution des modules / frameworks,
Rend le code difficile à comprendre en raison de la pléthore de cadres et de modules disponibles et de toutes leurs particularités,
Rend le code moins logique à moins d'avoir lu toute la documentation; c'est-à-dire que je peux lire certaines listes de compréhension et de logique conditionnelle et comprendre ce que fait un programme, mais quand vous voyez des fonctions qui nécessitent de passer des chaînes et des dictionnaires arbitraires, les choses deviennent un peu difficiles à comprendre à moins que vous ne soyez déjà un gourou un module donné; et:
Il est difficile et fastidieux de basculer entre les cadres. La commutation entre les langues est déjà un défi, mais elle est gérable si vous avez une compréhension suffisamment solide de leur fonctionnalité / philosophie de base. Le basculement entre les cadres semble être davantage une question de mémorisation par cœur, ce qui semble à certains égards encourager l'inefficacité même que ces cadres ont été conçus pour éliminer.
Avons-nous vraiment besoin de mettre environ 50 couches d'abstraction au-dessus de quelque chose d'aussi simple qu'une requête MySQL? Pourquoi ne pas utiliser quelque chose comme l'interface PDO de PHP, où les instructions préparées / les tests d'entrée sont gérés mais la requête SQL universellement compréhensible fait toujours partie de la fonction?
Ces abstractions sont-elles vraiment utiles? Les fonctionnalités ne sont-elles pas inutiles, rendant les applications plus difficiles par rapport à des applications similaires écrites sans utiliser de framework?
Do we really need to put like 50 layers of abstraction on top of something as simple as a MySQL query?
- Premièrement, un bon framework est une couche d'abstraction (peut-être 2 ou 3 en interne), et deuxièmement "quelque chose d'aussi simple qu'une requête MySQL" implique en fait une bonne douzaine d'abstractions. Même après que la requête que vous exécutez à partir de votre langage interprété a été envoyée au serveur de base de données, vous avez toujours des requêtes sur les bases de données sur les moteurs sur les systèmes de fichiers sur le stockage physique. Donc en bref: oui, nous avons besoin d'abstractions, car elles empêchent nos têtes d'exploser.
as a relatively inexperienced programmer
- plus vous créez de logiciels, plus vous apprécierez de passer moins de temps à réinventer la roue et plus de temps à la maison à faire des choses que vous aimez.