Autonomia & Tecnologia

Desmistificando o conceito de Django Apps

O conceito de Django Application é uma das principais sacadas do Django, e um dos grandes responsáveis por sua flexibilidade e alto reaproveitamento de componentes.

A documentação do Django explica brevemente a idéia:

“Uma app é uma aplicação web que faz alguma coisa — i.e., um weblog ou uma simples enquete.”

Esta definição, é geral o suficiente para abranger toda a flexibilidade do conceito, mas na prática dificulta bastante o seu entendimento.

A primeira coisa que precisamos atentar é que Django Applications não são exatamente Web Applications. No contexto do Django, uma Web Application está muito mais para um Django Project. É claro que é possível ter um projeto inteiro com apenas uma app, mas isso definitivamente cheira muito mal.

O segundo ponto que costuma passar despercebido é que uma Django App “faz alguma coisa”, ou seja, faz uma coisa qualquer. É muito importante que sua app tenha uma responsabilidade única e bem definida. Isso viabiliza o reaproveitamento e simplifica a manutenção do seu código.

Por último, mas não menos importante, temos a confusão da “visão monolítica”. Provavelmente porque o conceito é abstrato e o termo “application” tem outros significados, é comum a visão equivocada de que uma app é um “bloco do sistema” ou “conjunto de modelos e views“.

O resultado dessas confusões geralmente é ruim. Criam-se algumas poucas apps para conter os modelos e views principais do sistema, e com o tempo estas apps terminam inchando para comportar outras funcionalidades satélites do projeto. Consequentemente, surgem no projeto:

  • caos;
  • impossibilidade do reaproveitamento da app;
  • códigos duplicados;
  • dificuldade de desenvolver testes;
  • manutenção do sistema difícil e cara;

Em essência, Django Application é simplesmente um pacote Python que segue algumas convenções. Essas convenções são importantes, pois permitem que o Django detecte suas características e agregue suas funcionalidades ao projeto.

Para demonstrar o quão flexíveis e gerais podem ser as app, vou citar algumas:

Concluindo, apps são extremamente poderosas e  podem facilitar muito a sustentabilidade de um sistema. Por tanto, não tenha medo de ter muitas apps em seu projeto. Um simples blog feito em Django pode facilmente ter mais de 15 apps. Então se você está desenvolvendo algo maior que isso e tem poucas apps, reveja suas estratégias para garantir que seu código não fique desorganizado e muito acoplado.

[]’s!

você pode gostar também
Comentários