O que é Spaghetti Code e como evitá-lo

Publicados: 2020-07-03

Embora possa ser um delicioso jantar italiano, uma das últimas coisas que você quer ouvir sobre sua base de código é espaguete . A ideia de que seu código está tão emaranhado como um prato de espaguete é horrível, mas para muitos desenvolvedores, a ideia é tão abstrata que eles não conseguem entendê-la (ou entender como evitá-la ou consertá-la). É por isso que neste post queremos mergulhar no que realmente é o código espaguete, mostrar algumas das melhores práticas para evitá-lo e (quando isso acontecer) como lidar com ele.

Inscreva-se no nosso canal no Youtube

O que é Spaghetti Code?

O código espaguete é um pesadelo, é isso. Como dissemos acima, a gíria tem esse nome porque, como um emaranhado gigante de macarrão espaguete, se você puxar um fio (pedaço de código), ele acaba se entrelaçando em outro e outro e outro, até que ou todos os pedaços emaranhados se quebram.

Por exemplo, pense na propriedade! Important em CSS. É incrivelmente poderoso, permitindo que um designer substitua os estilos herdados e tenha controle sobre qualquer elemento específico sem ter que recodificar a folha de estilo inteira. No entanto, quando eles (ou futuros desenvolvedores e designers) precisarem ajustar alguma coisa, eles podem adicionar outra tag ! Important para substituir a anterior. E assim por diante. Mas se você voltasse e remova ou altere qualquer um dos itens dessa pilha, qualquer número de estilos na página pode quebrar.

Que é o que estamos tentando evitar.

Melhores práticas para evitar o código de espaguete

1. Desenvolva padrões de codificação

A maneira número um de prevenir o código espaguete é criar e codificar padrões dentro de sua organização ou projeto. Os padrões de codificação são o que tornam possíveis projetos como o WordPress. Milhares de desenvolvedores trabalharam no WP Core, mas os padrões de codificação do WordPress fizeram com que todos trabalhassem dentro das mesmas diretrizes e realizassem as tarefas dentro dos mesmos parâmetros da mesma maneira.

Os padrões de codificação são apenas regras que você aplica. Eles mantêm o código de todos trabalhando no mesmo padrão para que os erros sejam fáceis de localizar e corrigir e que os desenvolvedores futuros (ou mesmo você ou sua equipe atual) possam saber exatamente o que cada linha de código faz da maneira mais eficiente possível. Se o código de Susan não está passando nos testes, ele não entra. Se o código de Janine não tem testes para executar, a solicitação de pull é negada. Talvez Daniel não use divs em sua solicitação de pull mais recente. Nenhuma fusão até que as coisas sejam divididas.

Além disso, algumas das bases de código originais infestadas por código espaguete eram linguagens mais antigas sem lógica funcional. O código não era baseado em função e, portanto, várias lógicas eram direcionadas a linhas específicas dentro do código. Com projetos pequenos, isso não é tão ruim de navegar. Quando você começa a dimensionar projetos, ter referências diretas a arquivos e linhas de código específicos pode impedir esse desenvolvimento. Arquivos podem desaparecer, linhas podem ser excluídas ou mal numeradas. E depurá-lo para descobrir exatamente qual fio do espaguete foi puxado pode levar centenas de horas por pessoa. Ter padrões de codificação pode evitar que esse tipo de confusão aconteça com frequência.

Portanto, ao desenvolver padrões, você reduziu de forma bastante eficaz as chances de ter um repositório de código espaguete. Se você quiser saber mais sobre os padrões de codificação em geral, GeeksforGeeks tem um excelente guia.

2. Siga um Guia de Estilo

Além dos padrões de codificação, ter um guia de estilo a seguir também pode evitar que seu código fique muito emaranhado. Embora possa parecer semelhante em teoria, os dois são muito diferentes. Os padrões de codificação existem como regras aplicáveis ​​que seus desenvolvedores seguem para manter o código funcionando de maneira eficiente. Eles podem mudar de projeto para projeto ou de equipe para equipe dentro de uma organização.

Um guia de estilo, entretanto, é geralmente escrito em uma base de linguagem por linguagem, fornecendo uma série de práticas recomendadas para tornar o código legível e funcional. Por exemplo, o Airbnb criou um dos melhores guias de estilo para React.js que existem. Se você não for um desenvolvedor do React, isso significa quase nada. Mas, para os desenvolvedores do React, olhar para isso pode ser uma ajuda real em como seu código deve ser estruturado e escrito para torná-lo o mais acessível possível para que os futuros desenvolvedores o classifiquem.

Um guia de estilo, em contraste com os padrões gerais de codificação, não são regras necessariamente aplicáveis. São sugestões para tornar o código mais uniforme, o que torna o código mais fácil de ler. O que evita o código espaguete porque você sabe exatamente qual fio está puxando em um determinado momento.

3. Comente seu código

Os comentários de código são talvez a maneira mais fácil de evitar que seus repositórios fiquem cheios de código espaguete. Ao escrever algo, crie um comentário sobre o que ele faz. Se for uma função ou fragmento complicado, explique o que a lógica faz e por que é importante.

No entanto, você enfrenta alguns problemas ao depender de comentários de código para evitar bagunças. A primeira é que adiciona muito tempo extra aos projetos. Quando você está tentando cumprir um prazo ou certificar-se de que um recurso está funcionando corretamente, nem sempre é importante escrever uma explicação detalhada sobre ele. E se você começar comentando e cair no meio do projeto ou o próximo desenvolvimento não continuará? É um grande prato de espaguete.

Outros ficam sobrecarregados com a ideia de comentar seu código - ou aprender a comentar seu código se ainda não o fizeram - por causa do grande volume que desenvolvem. O que é totalmente válido. Mas mesmo que você comente ocasionalmente sobre linhas ou fragmentos importantes (ou mesmo precários), você salvará alguém, potencialmente você mesmo, do trabalho de puxá-lo no passado, tentando descobrir o que ele faz.

Empacotando

O código espaguete é um pesadelo, repito. Gastar incontáveis ​​horas tentando descobrir qual linha de código foi alterada em um repositório gigantesco é uma das piores partes de ser um desenvolvedor. A depuração está bem (ish). Depurar e não saber por onde começar ou o que está causando o problema remotamente não é. Mas se sua equipe definir padrões de codificação, seguir um guia de estilo de linguagem e tiver até mesmo uma política de comentário de código menor, há uma chance muito alta de que seu prato de espaguete digital fique muito menos emaranhado do que estaria.

O que você faz para evitar o código espaguete?

Artigo caracterizado por imagem por Donnay Style / shutterstock.com