Estou programando há pouco menos de um ano e tenho alguma experiência em escrever aplicativos de sistemas, aplicativos da web e scripts para empresas / organizações. No entanto, uma coisa que eu realmente nunca fiz foi trabalhar com um framework como Django, Rails ou Zend.
Observando a estrutura do Django, estou um pouco frustrado com o quanto é abstraído nas estruturas. Entendo os objetivos principais do código DRY e mínimo, mas parte dessa dependência excessiva de diferentes módulos e da pesada abstração das principais funções parece:
Faz com que os programas sejam datados muito rápido devido à natureza em constante mudança dos módulos / estruturas,
Torna o código difícil de entender por causa da infinidade de estruturas e módulos disponíveis e de todas as suas idiossincrasias,
Torna o código menos lógico, a menos que você tenha lido toda a documentação; ou seja, eu posso ler algumas compreensões de lista e lógica condicional e descobrir o que um programa está fazendo, mas quando você vê funções que exigem a passagem de strings e dicionários arbitrários, as coisas ficam um pouco difíceis de entender, a menos que você já seja um guru em um determinado módulo; e:
Torna difícil e entediante alternar entre estruturas. Alternar entre idiomas já é um desafio, mas é gerenciável se você tiver uma compreensão suficientemente forte de sua funcionalidade / filosofia principal. Alternar entre estruturas parece ser mais uma questão de memorização mecânica, o que, de certa forma, parece incentivar a própria ineficiência que essas estruturas foram projetadas para eliminar.
Nós realmente precisamos colocar 50 camadas de abstração em cima de algo tão simples quanto uma consulta MySQL? Por que não usar algo como a interface PDO do PHP, onde as instruções preparadas / testes de entrada são manipulados, mas a consulta SQL universalmente compreensível ainda faz parte da função?
Essas abstrações são realmente úteis? O inchaço dos recursos não os torna inúteis, tornando os aplicativos mais difíceis em comparação aos aplicativos similares criados sem o uso de uma estrutura?
Do we really need to put like 50 layers of abstraction on top of something as simple as a MySQL query?
- Primeiro, uma boa estrutura é uma camada de abstração (talvez 2 ou 3 internamente) e, em segundo lugar, "algo tão simples quanto uma consulta MySQL" na verdade envolve uma boa dúzia de abstrações. Mesmo depois que a consulta que você executa a partir de sua linguagem interpretada chegou ao servidor de banco de dados, você ainda tem consultas em bancos de dados em mecanismos em sistemas de arquivos em armazenamento físico. Então, resumindo: sim, precisamos de abstrações, porque elas impedem nossa cabeça de explodir.
as a relatively inexperienced programmer
- quanto mais você criar um software, mais gostará de gastar menos tempo reinventando a roda e mais tempo em casa fazendo as coisas que mais gosta.