Olá pessoal,

anti-padrões assim como os padrões de projeto (Design Patterns) oferecem soluções para problemas recorrentes. Um anti-padrão especificamente descreve uma solução comum para um problema que gera conseqüências negativas.

Provavelmente o Código Espaguete é o anti-padrão mais conhecido e difundido entre desenvolvedores. O objetivo deste post é definir este anti-padrão e como ele pode ser combatido.


Identificação

O Código espaguete ocorre quando a arquitetura e o desenho do software não foram muito bem compreendidos, aliado ao estilo ADHOC de desenvolvimento, ou seja, “desenvolvimento a toque de caixa”. Este é o estilo onde os desenvolvedores são pressionados a codificar o mais cedo e mais rápido possível para ganhar tempo. As tecnologias e principalmente as linguagens de programação tem grande influência nas causas deste anti-padrão.

Ainda hoje, na era da programação orientada a objeto (POO) e linguagens de alto nível, o anti-padrão ainda persiste. Muitos desenvolvedores inexperientes em POO, especialmente aqueles que têm um forte background em linguagens procedurais, como C, tendem a imitar algoritmos processuais e estruturas de dados. Isto muitas vezes resulta no abuso ou negligência das características centrais de POO como herança, encapsulamento e polimorfismo.


Sintomas


Os sintomas deste anti-padrão incluem, mas não estão limitados a:


  • Código confuso, incoerente ou mal estruturado;
  • mal funcionamento de mecanismos arquiteturais como:
    • tratamento de exceções,
    • controle de transações,
    • auditoria (logging),
    • mapeamento objeto-relacional,
    • segurança, entre outros;

  • uso excessivo de estruturas e variáveis globais;
  • o uso de GOTOs em linguagens procedurais
  • fluxos de controle complexos em POO;
  • demora nas manutenções;
  • hesitação e insegurança do desenvolvedor em alterar o código existente.
O resultado é um código insustentável, que é muito difícil de ler, compreender e reutilizar.


Solução

Em geral, a solução para o código espaguete é a refatoração do software. Refatoração é uma técnica para reestruturação de código orientado a objetos. Consiste em alterar a sua estrutura interna sem alterar o seu comportamento externo. O princípio básico é fazer uma série de pequenas alterações que preservam o comportamento. Esse trabalho compreende uma série de atividades, tais como:


  • renomear classes, métodos e variáveis;
  • remover código morto;
  • extrair classes, métodos e interfaces;
  • aplicar padrões de codificação;
  • tornar o código mais reutilizável;
  • separar código de acesso a dados;
  • reconstruir mecanismos arquiteturais;
  • reescrever o software parcial ou totalmente.

Um catálogo de refatorações de código orientado por objetos foi definida por Martin Fowler no seu livro Refactoring (http://www.refactoring.com/catalog/index.html).


Enfim, a refatoração de código deve ser realizada freqüentemente durante o desenvolvimento, para evitar o código espaguete depois de meses ou mesmo anos de manutenções. Essa diretriz promove o desenvolvimento sustentável evitando a degradação da arquitetura do software ao longo do tempo.


Para saber mais:


Site sobre anti-padrões

http://www.antipatterns.com/

Site sobre refatoração
http://www.refactoring.com/


O Analista Desenvolvedor “Rambo”

http://blog.marcomendes.com/2009/02/25/o-analista-desenvolvedor-rambo/


Desenho de aplicações Java EE e .NET como uma atividade econômica de investimento em software

http://blog.marcomendes.com/2009/12/05/desenho-de-aplicacoes-java-ee-e-net-como-uma-atividade-economica-de-investimento-em-software/


de Pangea, Adriano.


Exibições: 395

Comentar

Você precisa ser um membro de PanGea para adicionar comentários!

Entrar em PanGea

Comentário de Flavio Clesio em 17 julho 2010 às 19:37
Excelente artigo.

Badge

Carregando...

© 2018   Criado por Adriano Tavares.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço