Design, Programming

Porque armazenar numéricos como String?

Uma dúvida comum para quem está começando é como armazenar coisas como CPF, RG, Telefone ou coisas do gênero. Devemos usar números ou texto?

São valores, à princípio, compostos por números. É natural pensar em armazenar como inteiro: int ou Integer no Java; INTEGER nos bancos de dados que atendem ao padrão ANSI).

Algumas pessoas pensam em valor com pontos flutuantes (float ou double) porque podem representar dígitos nas casas decimais.

Além disso, armazenar um número é muito mais eficiente (em termos de espaço) que armazenar um texto: no MySQL, um INT pode armazenar valores de até 9 dígitos em 4 bytes enquanto um VARCHAR teria que usar até 10 bytes.

Mas será que economizar bytes de armazenamento é tão importante em uma época que você pode levar uns 32 bilhões de bytes no bolso?

Armazenar RG, CPF ou Telefone como texto é vantajoso porque:

  • zeros à esquerda são importantes e números iriam removê-los;
  • valores negativos não fazem sentido (e não existem unsigned ints em Java);
  • não faremos cálculos ou contagens com esses valores;
  • o importante não são os números, mas os caracteres que, por acaso, são numéricos;
  • o RG, por exemplo, pode ter letras. É regra em Minas Gerais;
  • guardar a formatação original com, p. ex., parênteses e traços pode ser interessante.

Ao modelar a sua aplicação, é fundamental comparar as alternativas. Facilidade de manutenção, corretude, rapidez de desenvolvimento (não gosto de usar o termo produtividade) devem ser favorecidas em relação a performance crua.

Anúncios
Design, OO

Moldes de Modelagem

moldes de modelagem

Há algum tempo, o grande Akita blogou sobre o termo “Padrões de Projeto” e como esse termo leva a uma confusão de conceitos.

Essa confusão acontece porque as palavras “Padrão” e “Projeto” tem vários significados na língua portuguesa.

“Padrão” pode significar duas coisas:

“Projeto” também pode significar duas coisas:

Os design patterns do mundo do software, cuja ideia originou-se da arquitetura de prédios, são uma coleção de soluções comuns para problemas recorrentes. Não são normas de planos, nem moldes de planos. Também não são normas de modelagem.

Design patterns são moldes de modelagem.