Imagine que você está desenvolvendo um programa para uma empresa qualquer, em um país cuja moeda não tenha centavos. Então para tudo a que se refere a dinheiro você lasca um int.
int preco;
int calculaTotal();
int obterImposto(int precoBruto);
Passa o tempo, o seu programa fica pronto, e ele é tão bom que você passa meses sem nem olhar para o seu código fonte. Aí é eleito um presente maluco que resolve fazer uma arruaça com o sistema financeiro do país. Muda o nome da moeda, muda o câmbio, e, mais importante para você, ela passa a ter centavos.
Lindo, não? Todos os clientes passam a querer uma atualização. Com certeza os lucros serão os maiores de todos os tempos para sua firma. Mas aí vem o grande problema: com os centavos, o tipo int já não serve mais, e deve ser mudado para float.
Fazer esta mudança não é tão simples, porque você não pode simplesmente substituir todos os int do código fonte por float sem analisar para ver se aquele int se refere a um valor monetário ou não. Vai que ele é apenas um contador? Fazendo algo assim, sem pensar, poderia até mesmo trocar o int dentro de palavras, criando aberrações como, sei lá, #include "floaternational.h".
Pra piorar, o fato de você ter passado meses sem olhar para o código fonte fez você esquecer muito de sua própria lógica.
Sentiu a dor de cabeça?
Para evitar situações assim, a linguagem C++ oferece a facilidade de definirmos os nossos próprios tipos. No caso acima, poderíamos definir um tipo moeda e usar este novo nome ao invés de int. Daí, mais tarde, no caso de haver alguma alteração, bastaria mudar a definição do tipo que todo o programa acompanharia a mudança.
typedef int moeda;
moeda preco;
moeda calculaTotal();
moeda obterImposto(moeda precoBruto);
Numa mudança dessas, talvez fosse necessário fazer alterações em um ou outro método, mas seriam problemas de arredondamento e afins, nada relacionado com ficar vasculhando código, linha a linha, para saber onde fazer mudanças.
E se você ainda não está convencido a usar tipos definidos em seus sistemas, veja lá outro detalhe: além de evitar problemas como o descrito neste artigo, definir tipos ainda traz outra vantagem, que é tornar o código fonte mais legível.
Convencido? Então, a partir de agora, em seus sistemas, sejam eles grandes ou pequenos, declare todos os tipos juntos em um único arquivo .h e inclua-o em todos os outros onde for necessário.
Nenhum comentário:
Postar um comentário