Definindo Tipos em C++ para Sofrer Menos

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: