livro_obj_pratic-300x300

PHP: O Problema

Este texto foi retirado na integra do livro Objetos PHP, Padrões e Prática de Matt Zandstra.

Mal comecei a ler e já deu vontade de compartilhar o pensamento com os demais colegas:

A questão é que PHP é fácil demais, o que o incentiva a implementar suas idéias, retornando, assim, bons resultados. Algumas dessas facilidades são a possibilidade de digitar grande parte de seu código diretamente em suas páginas da Web, adicionar funções úteis (como um código de acesso a banco de dados) a arquivos, incluindo-as de página página e, antes de se dar conta, você já te, um aplicativo Web em execução.

Bem, na verdade você esta indo e, direção ao desastre, porém nem percebe, é claro, pois seu site parece fantástico; ele funciona bem, seus clientes estão satisfeitos e gastando dinheiro.

O problema surge quando você retorna ao código para iniciar uma nova fase. Mas agora você tem equipe e orçamento maiores e mais usuários. E, sem aviso algum, as coisas começam a dar errado, como se seu projeto tivesse sido envenenado.

Neste momento, seu novo programador quebra a cabeça para entender o seu código, que para você pode ser óbvio, embora, talvez, um pouco pretensioso em suas declarações e expressões. Porém ele, o programador, está demorando mais que o esperado para exibir seu potencial e pode vir a se tornar um membro da equipe.

Uma mudança simples, estimada para um dia, aumenta para três dias ao descobrir que será preciso atualizar 20 ou mais páginas da Web. Então, um de seus programadores salva sua própria versão de um arquivo por cima das principais mudanças que você mesmo havia feito no mesmo código. Mas tal perda só é descoberta três dias depois, quando você já alterou novamente a sua própria cópia do mesmo código.

E, assim, mesmo usando um terceiro desenvolvedor, que também estava trabalhando no arquivo, leva-se mais um dia para organizar a bagunça.

Depois, devido à popularidade do aplicativo, você precisa migrar o código para um novo servidor. O projeto tem de ser instalado manualmente e, então você descobre que, na maioria dos códigos-fonte, os caminhos de arquivos, nomes de bancos de dados e senhas firam codificados permanentemente. Então, você interrompe o processo de migração , pois não quer sobrescrever as alterações de configuração necessárias. Mais à frente alguém teve a “brilhante” idéia de envolver no projeto o módulo ModRewrite do Apache. As duas horas estimadas viram oito, e, agora, o aplicativo requer o funcionamento adequado do tal módulo.

Pronto, você finalmente prossegue para a fase 2 e, por um dia e meio, tudo corre bem. Porém, quando você está prestes a sair do trabalho, chega a notícia do primeiro bug encontrado e, minutos depois, o cliente, telefona para reclamar. A explicação é a mesma, mas após uma análise mais minuciosa, descobre-se que o mesmo problema esta sendo causado por um bug diferente. Você então, se lembra de que lá no início da fase foi necessária uma simples mudança que exigiu diversas modificações no projeto inteiro e percebe que nem todas foram feitas, o que pode ter ocorrido por descuido ou, durante a união dos arquivos em questão, eles foram sobrescritos.

Aí, você apressadamente faz as alterações necessárias para consertar os bugs, pois está ansioso para testá-las. Como essa é uma simples tarefa de copiar e colar, o que pode dar errado?

Na manhã seguinte você chega ao trabalho e descobre que o módulo do carrinho de compras não funcionou a noite inteira, pois nas mudanças corriqueiras feitas de última hora você esqueceu de colocar o ponto de interrogação principal no código, tornando-o inoperável. E, claro, enquanto você dormia, alguns clientes em outras partes do mundo estavam acordados e prontos para gastar dinheiro em sua loja virtual. Você, então, conserta o problema, tranqüiliza o cliente e reúne sua equipe para mais uma jornada de buscas e consertos de bugs no projeto.

Essa historinha muito comum entre os programadores pode parecer um pouco exagerada, mas freqüentemente vejo isso acontecer. Muitos projetos PHP começam simples e pequenos e acabam se tornando verdadeiros monstros, de tão grandes.

Devido à camada de apresentação também possuir a lógica do aplicativo, a duplicação de código surge assim que as consultas a banco de dados, autenticações, processamento de formulários e outras coisas são copiadas de uma página para outra. Se um bloco de código for alterado, todas as suas cópias terão de ser modificadas também, caso o contrário, certamente haverá bugs.

A falta de documentação dificulta a compreensão do código e a escassez de testes permite que bugs passem despercebidos até a hora da implementação. De natureza dinâmica, o negócio de um cliente geralmente implica que o código acabe se afastando tanto de seu propósito original que chega a executar tarefas para as quais não foi projetado. Como o código freqüentemente se torna um emaranhado confuso de números e letras, fica difícil, senão impossível, trocar ou reescrever partes para que satisfaça às novas exigências.

Porém, nada disto é má notícia se você é um consultor PHP autônomo. Avaliar e consertar um sistema como esse lhe proporciona a regalia de poder pagar festas caras, assim como boxes e mais boxes de DVD por seis meses ou mais.

Mas, falando sério, problemas como este podem resultar no sucesso ou fracasso de um negócio.

Estagnário: Favor ler e evitar traumas em seus futuros colegas.
Gerentes: Favor ler e parar de traumatizar seus subordinados.
POGamadores: Favor ler e parar de fazer porcaria.
Pessoal sem noção: Me chamem para fazer consultoria, caso tenha lido este post dou 50% de desconto + brinde.

Leia também: 5 coisas que um programador PHP precisa – PHPSP

Valeu a dica André:
https://www.packtpub.com/oop-php-5/book
http://www.smashingmagazine.com/2009/01/20/50-extremely-useful-php-tools/

2 thoughts on “PHP: O Problema

  1. Muito bom seu post, depois do que eu li aqui eu sou um futuro programador hehehe, realmente muito bom estou procurando artigos assim que oriente aqueles que querem trabalhar direito, esse livro ai entro na fila para a leitura…

    Vlw pela dica.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios são marcados com *