0

Spaghetti Code um codigo sem nexo, emaranhado de comandos

Vagner Bellacosa
Vagner Bellacosa

Spaghetti Code o anárquico mundo dos coders birutas


Não seja seduzido pelo lado negro da força e evite programar spaghettis


Salve jovem padawan, nesta fria noite de inverno, próximo da hora da janta, resolvi comentar sobre um assunto, que numa primeira olhada, seria hilário, mas é coisa séria, gerando muita, mas muita dor de cabeça, nas equipes de sustentação e explodindo com SLAs.


Mas não se assuste, o tiozão não surtou, e nem está inventando a roda, o termo spaghetti code foi cunhado no final dos anos 70 do século passado, ninguém reivindicou a paternidade, mas acredita-se, que surgiu espontaneamente nas mentes de inúmeros devs em CPDs, espalhados pelo mundo.


Em artigos anteriores exploramos o mundo da consultoria desgovernada com as 9 Gestantes gerando um bebe em um mês, terceirizações, quarteirizações e outros males, problemas do Dr. Ivon Safe e o teorema da seringa e o bumbum, podemos dizer que o Spaghetti Code é cria destes e outras mazelas dos Centro de Processamento de Dados.


Mas não pense que é um problema do mundo mainframe, ledo engano pequeno gafanhoto, o spaghetti surge em toda a parte, onde impera o caos, porem ele causa mais estragos nas pequenas e medias empresa, em que a estrutura hierarquia, QA e analise de performance são mais brandos, mas vamos por partes, primeiro vamos as definições.


O que é Spaghetti Code?


A definição não é nada pomposa, spaghetti code é uma piada interna no mundo da informática para código ruim, para ser franco, pior que ruim, péssimo mesmo, geralmente são longos e grandes linguições de código, sem ou com pouco comentário, variáveis herméticas, laços de repetição enormes e emanharados, recheado de instruções de salto, o famoso (GoTo).


São programas legados, que todo dev se apavora em resolver um abend, tentar corrigir um erro é certeza de dor de cabeça, horas e horas analisando código, tentando decifrar o que o criador pensou ao criar esse spaghetti bizarro.


As equipes de sustentação evitam a todo custo mexer nele, afinal esta quieto e funcionando, qualquer alteração pode acordar o dragão e com certeza, iras sair chamuscado desta empreitada, cuidado meu amigo.


Saiba que neste reino dos spaghetti, ele não está sozinho, existem outras delicias que enlouquecem os programadores, alguém até cunhal o termo de anti-design pattern, para explicar essas insanidades.


Como surge um spaghetti code?


Normalmente prazos apertados e falta de acompanhamento das equipes, onde muitas empresas adquiriam software chave na mão, a preços baixos de hora-homem na codificação, como o requisito era economia e não qualidade, abriam mão de verificar o que estava dentro da caixa-preta.


A softhouse, por sua vez, no afã de entregar o software acordado, dentro das limitações orçamentarias contrata devs juniores e deixa-o a própria sorte, tendo que desenrascar-se e entregar o código a tempo e a ordem.


Muitas vezes ocorre a meio do projeto desligamento, principalmente quando a pressão aumenta, gerando turnovers altíssimos, que perdendo know-how o improviso entra em cena, tornando a coisa mais confusa, aliados a proximidade do dead-end, que acaba obrigando a equipe trabalhar além do horário, cansados e desmotivados. Afinal ninguém gosta de fazer um trabalho ruim.


Se não me dispersei muito apresentei alguns dos fatores criadores do spaghetti: prazo apertado, dev inexperiente, equipe enxuta, baixa remuneração, pressão do comercial que vendeu um iate e está vendo uma canoa, fata de conhecimento na linguagem por parte da equipe, falta de planejamento, falta de documentação, usuário desconhece as regras do negócio e acaba confundindo o analista de sistema que cria especificações mucho locas e é claro este projeto está fadado ao desastre.


Outra maneira de criar um spaghetti code é pegar um código muito velho e ir acrescentando novas e novas funcionalidades, nisso após alguns anos terás um monstrengo de código-


Lembrei de mais outra, existem ferramentas geradoras de código, onde um analisa usando linguagem natural especifica o programa e o software gera o código pronto do outro lado, funcional, porem enorme e cheio de pendulicarios que ninguém sabe o que faz.


Existem outras formas, mas seria chover no molhado, falhando do mesmo.A constante sempre é equipe despreparadas, prazos apertados e ganancia de alguns elementos, que preocupam-se apenas com o OKR, pois uma vez entregue o código, ele passa a ser problema da equipe de sustentação.


Como evitar spaghetti code?


Cabe ao gestor da equipe orientar a equipe a produzir código com qualidade, isto é. Bem comentarizado, identado, performático, com variáveis legíveis e bem declaradas, tenho dois artigos falando sobre variáveis, vale a pena reler. 


Tenha em mente, o código fonte é escrito por humanos para humanos, afinal um código tem vida, recebe atualizações, alterações, evolui e até mesmo falece, por isso pense sempre no próximo DEV que irá analisar e trabalhar com seu código, acrescentando ou removendo funcionalidades. 


Com o passar dos anos, foram sendo criadas inúmeras metodologias para evitar código de difícil leitura e manutenções custosas, estude os design patterns e aplique codificando no estado da arte.


Conheça outra pasta codes


Alguns espíritos jocosos foram além, e dentro do universo dos spaghetti code, foram desmembrando situações e as reagruparam em novos grupos, sempre seguindo a ideia de apresentar monstrengos da codificação em delicias da culinária mediterrânica, em especial “la bella cucina italiana”.


Esses codigos sao de dificil manutençao e somente um programador corajoso, ou insano-temerario ira meter a mao e sujeitar-se aos seus perigos, bugs e abendes, falando nisso voce leu meu artigo sobre a origem do bug?


Macaroni code


O código do macarrão é uma analogia sarcástica da linguagem macarônica e esse código é definido como o código que usa uma mistura de patterns, linguagens de computador em um único documento. 


Um código de programa é geralmente escrito para que outros programadores possam trabalhar evoluindo o software, o macaroni além de ter várias linguagens de programação misturadas e terem a funcionalidade de trabalhar em um ambiente misto em uma única instalação.


Um bom conhecimento da maioria das linguagens de programação é necessário para entender o código do macarrão e cuidado para não perder a sanidade no processo.


Stromboli code


Um código totalmente enrolado, sem logica compreensível a primeira vista, imprima o fonte e desenrole até o fim, totalmente pulverizado e codificado de maneira desleixada, bem assustador quando abendam de madrugado, quando a vista esta bem cansada.


Campanelle code


Com tantas frameworks, metodologias e designs sendo criados a cada dia, algum gênio resolve inovar e usa uma daquelas frameworks inovadoras, cheias de recursos e que ninguém conhece, sobre desse male, quando fiz o giro na Europa, cada cliente tinha a sua e os primeiros meses gastava-se aprendendo a usar a ferramenta e surfar nas suas nuances.


Baklava code


Ai meu rim, os gênios da arquitetura sempre inovando e nos surpreendendo, o baklava code e bem semelhante ao lasagna code, uma base de código com muitas camadas arquitetônicas / abstratas.

lasagna code


O descuido não é a única maneira de acabar com um código difícil de manter; o excesso de complicação também pode ser uma causa. Trabalhei durante uma década em Portugal, em 2004 aceitei um emprego em uma consultoria informática, que tinha uma das bases de código mais confusas que já vi. O programa era escrito numa framework, numa pseudo linguagem natural, que ao compilar-se gera um fonte em Cobol ou Java, terrivelmente confuso e cheio de copybooks e referências externas. Imagine que cada elemento do produto foi abstraído em dezenas de componentes aninhados singulares. Era quase impossível fazer uma alteração em uma camada da pilha sem afetar todas as outras camadas. A base de código não era uma bagunça, mas também não era sustentável.


Se o código espaguete sofre de desleixo arquitetônico, o código da lasanha é uma característica do excesso de engenharia em sua forma mais extrema. Os coitados dos programadores que trabalham com bases de código orientadas a objetos geralmente caem nessa armadilha. 


O código da lasanha é abstraído, camadas fortemente conectadas; os desenvolvedores o escrevem porque estão convencidos de que cada subcomponente necessita de seu próprio objeto. Esses programadores tendem a se concentrar no layout do código em detrimento de sua manutenção. O que começa como uma base de código altamente organizada rapidamente se torna um desastre arquitetado demais.


Esta é uma boa regra a seguir: seja conservador com suas abstrações. Se você planeja abstrair um componente que apenas um outro componente usa, o que, por sua vez, apenas outro componente usa, você foi longe demais. Mantenha a base de código simples. Olho vivo meu jovem padawan.


Ravioli code


A estrutura de software ideal é aquela com componentes pequenos e fracamente acoplados; essa estrutura ideal é chamada de código de ravioli.


Ravioli são basicamente pequenos pacotes de massa com coisas deliciosas, então em um código de ravióli, cada um dos componentes, ou objetos, é um pacote contendo um pouco de carne ou outro alimento para o sistema.


Qualquer componente pode ser modificado ou substituído sem afetar significativamente outros componentes em um código de ravióli. Mas cuidado com sua lucidez, pois em um código de ravióli, existem milhares de pequenas classes e é muito difícil descobrir de onde tudo acontece.


Embora esse tipo de codificação seja bastante atraente do ponto de vista de acoplamento e coesão, a separação e o encapsulamento do código podem expandir as pilhas de chamadas, o que, por sua vez, cria um problema de navegação pelo código para fins de manutenção, pobre padawan isso foi cruel, ne?


Gnocchi code


Ai meu caro, são blocos ilegíveis de código, você pode dizer que há um algo acontecendo lá dentro, mas você não tem a menor ideia do que é, alterar esses blocos de código densos e inacessíveis é algo bem temerário, pois a alteração, a guarda em produção parecera impossível, pois ele irá abendar e causar muitos danos a sua reputação.


Pizza code


Pequeno glutão, está pizza não é uma delícia do Bras ou do Luigi, mas se encaixa com o código do espaguete e seu mal afamada laia na teoria da massa como um antipadrão de programação. Na maioria dos casos, o código de pizza é descrito como um código com uma arquitetura plana.


O código de pizza geralmente tem um grande número de classes ou funções, todas interconectadas no mesmo nível no topo de uma camada fundamental. No código da pizza, os componentes individuais são geralmente independentes uns dos outros, mas às vezes pode ser difícil extraí-los sem interferir nos outros.


Todo bom software requer estrutura. O código da pizza sofre por ser mal projetado. É bom ter componentes relativamente isolados, mas o código de pizza torna quase impossível entender as funções e responsabilidades de cada classe. Para obter a base de código sob controle, corte o código da pizza em fatias; adicione alguma estrutura lógica a cada componente.


Spaghetti code in the cloude


Bem vindo ao século XXI, com tanta gente entrando no universo do Cloude Computer, prepara-se, aperte o sinto e divirta-se com essa modalidade, código espalhado em múltiplas maquinas em inúmeros países, o céu é o limite.


Conclusao 


Acabei me empolgando, o tiozão escreveu muito virou um testamento, quase virou um pentateuco, perdou-me, pois o assunto é instigante e tem tanta informação a passar que ficaria aqui a noite toda escrevendo.


Espero ter ajudado e não confundindo muito, duvidas, correções e reprimendas, já sabem aqui no Forum ou no Discord.




Espero ter ajudado ate o próximo artigo.


 Mais momento jabá, para distrair, visite meu vídeo e veja para onde fui desta vez : https://www.youtube.com/watch?v=gCGw4jSqyc0

Bom curso a todos.


 https://www.linkedin.com/in/vagnerbellacosa/


 https://github.com/VagnerBellacosa/


Pode me dar uma ajudinha no YouTube?


 https://www.youtube.com/user/vagnerbellacosa

0
0

Comentários (5)

0
R

Renato

17/08/2021 14:40

bem bacana, valeu amigo

2
Julio Lima

Julio Lima

10/08/2021 08:16

Muito bom, gosto de lasanha.

3
Vagner Bellacosa

Vagner Bellacosa

10/08/2021 11:18

Amigo Leandro e Julio, muito obrigado pelas palavras amigas.


Bom curso a todos...


eu tbm adoro uma boa parta... lasagna `tudo de bom... pizza é um sonho

2
Leandro Carvalho

Leandro Carvalho

10/08/2021 07:38

Parabéns pelo excelente artigo e por te compartilhado com todos o seu conhecimento sobre esse assunto.

1
Isac Leite

Isac Leite

10/08/2021 14:26

Muito bom o artigo, parabéns pela idéia!!!!

Analista Programador dinossauro IBM Mainframe

Brasil