Seções iMasters
Carreira + Desenvolvimento

O legado da selva

Em algum ponto da carreira, todo desenvolvedor tem a oportunidade de trabalhar em um projeto horrível e cheio de nós. Sobreviver a essa experiência aguça a mente e as habilidades de cada um. Eu gosto de acreditar que ninguém escolhe criar uma monstruosa bagunça de códigos. Em vez disso, a bagunça cresce organicamente. Quando os desenvolvedores são pressionados por tempo, falta de experiência, ou quando se deparam com requisitos que estão sempre mudando, a bagunça fica maior, até que ela cresce tanto e fica cabeluda demais para ser resolvida. Independentemente da maneira como essa bagunça se forma, um dia pode ser seu o trabalho de domar e alimentar esse monstro. Estar preparado vai te poupar estresse e vai te deixar com mais cabelo.

Se
prepare

Conhecimento
e informação são críticos quando trabalhando na selva. Obter informação deve ser
sua primeira prioridade. Existem alguns autores anteriores por aí? Ou você vai
ter que enfrentar o monstro sozinho?

Se você tem acesso ao controle do
histórico da versão, leia o histórico recente. Entenda o que tem já aconteceu com
o código e onde as zonas de problema devem ser. Leia tudo que você pode e
comece a trabalhar. O código, os comentários, e o controle do histórico da
versão – estas são todas pistas para que você descubra o que aconteceu e como
aconteceu.

Em seguida, sinta como está a saúde da base do código. Ele é
executado sem erros? Ele funciona como tem que funcionar? Ele tem algum teste?
O teste funciona? Ter respostas para esses tipos de perguntas aumentam suas
chances de entender o projeto e os desafios que você deve enfrentar.

Mapeando a selva

Códigos
de legado, na maioria das vezes, parecem como uma selva indomável. Assim como em
uma selva de verdade, um mapa é essencial para a sua sobrevivência. Gerar um
gráfico incluído com inclued 
e usar graphviz  para criar
diagramas de como os arquivos são incluídos vão te ajudar a entender como as
coisas funcionam. Depois de instalar essas ferramentas, você pode gerar
arquivos de imagem ao executar:

php
/path/to/pear/graphviz.php -i /tmp/inclued.xxx.x -o inclued.dot
dot -Tpng
-o inclued.png inclued.dot

Esse tipo de mapa pode ajudar a clarear como um código bagunçado
consegue funcionar. Gerar gráficos de chamados podem ser úteis se você tem que
lidar com lógicas confusas, ou com call stacks com funções bagunçadas. Eu uso o Xdebug  e ferramentas como Webgrind  e xdebugtoolkit  para
criar gráficos de chamados e visualizar como um aplicativo é executado. Criar
gráficos de chamados pode te dar insights muito necessários sobre a estrutura
interna do código distorcido. Eu também faço muitas anotações – elas quase
sempre se mostram necessárias, seja para mim ou para meus colegas que estão na
mesma selva. 

Domesticando
e podando

Você só
consegue trabalhar na selva por um determinado tempo antes que ela comece a te
consumir. Em certo ponto, você vai querer e precisar começar a fazer mudanças,
sejam elas para sua própria sanidade mental ou para atender às necessidades do
seu negócio.

Você deve começar ajustando os caminhos e colonizando a selva o
mais cedo possível. Mas, antes de tentar, é bom fazer um planejamento e criar
“saveguards”. Eisenhower uma vez disse: “Planos são inúteis, mas planejar é
tudo”. Enquanto planos podem não ter sentido pouco tempo depois de você tê-los criado, discutir e pensar sobre como o código deve funcionar e como ele será no futuro é incomensurável. Isso vai te ajudar a focar no que precisa ser
feito, e se você está trabalhando com outras pessoas, vai te ajudar também a
gerar um consenso na direção que você for seguir.

Com
planos em mãos, é hora de criar alguns “saveguards”, os seus guarda-costas. O número de quantos você
fará vai depender do tamanho do trabalho que deve ser feito. Normalmente
eu faço saveguards na forma de testes automatizados. Se o seu projeto já tem
testes, adicione mais até que você sinta confiança que as mudanças que você
precisa fazer não vão acabar com tudo. PHPUnit 
e Selenium  são
excelentes ferramentas para criar testes automatizados que podem te dar a
confiança que você precisa para executar as mudanças que você precisa. Ter uma
suite de testes garante que o que deveria funcionar ainda funciona, e que você
não piorou a bagunça ainda mais. Eu viso a adição de testes nas partes mais
importantes e críticas do projeto, e avanço a partir daí.

Com testes automatizados em mãos, você pode começar a fazer as mudanças.
Dependendo do nível da bagunça, podem ter algumas tarefas fáceis. Eu
normalmente começo por descobrir seções com uma taxa alta de códigos
duplicados, e movo esse código para funções compartilhadas. Reduzir a
duplicação é uma maneira fácil de deixar a manutenção mais fácil, pois haverá
menos códigos para serem mantidos mais tarde.

Desenrolar
o código e separar suas preocupações é outro esforço produtivo. Ao separar SQL
queries/logic e HTML, você facilita a visualização dos códigos duplicados.
Preocupações separadas também facilitam escrever os testes, de modo que você
pode estar confiante que seu código ainda funciona.

Códigos
legados são um fato da vida, mas se você é esperto, cuidadoso, e se manter
vigilante, você pode transformar qualquer bagunça de código aleatória em um
jardim bem cuidado. Só é preciso tempo e paciência, assim como nos jardins do
mundo real.

 *

Texto original de Mark Story, disponível em http://phpadvent.org/2010/legacy-jungle-by-mark-story.

 

Mensagem do anunciante:

Torne-se um Parceiro de Software Intel®. Filie-se ao Intel® Developer Zone. Intel®Developer Zone

Qual a sua opinião?