Escolher o tipo de dados certo

Concluído

Você conheceu a diferença entre tipos de valor e tipos de referência, assim como tipos integrais e de ponto flutuante.

Suponha que seu trabalho é criar um aplicativo que recupera, manipula e armazena diferentes tipos de dados. Quais tipos de dados devem ser usados?

Em alguns casos, essa escolha é fácil. Por exemplo, quando você precisa trabalhar com textos, o padrão provavelmente será usar o tipo de dados string, a menos que você precise executar uma quantidade significativa de concatenação.

Mas e quanto ao trabalho com os dados numéricos? Há 11 opções diferentes. Como você escolhe o tipo de dados certo?

Escolher o tipo de dados certo

Com tantos tipos de dados para escolher, quais critérios você deve usar para escolher o tipo de dados certo para a situação específica?

Ao avaliar suas opções, é necessário ponderar várias considerações importantes. Geralmente, não há uma única resposta correta, mas algumas delas estão mais corretas do que outras.

Escolher o tipo de dados que atende aos requisitos de intervalo de valor de limite do seu aplicativo

Sua escolha de um tipo de dados pode ajudar a definir os limites do tamanho dos dados que você pode armazenar nessa variável específica. Por exemplo, se você sabe que uma variável específica deve armazenar apenas um número entre 1 e 10 mil, caso contrário, estaria fora dos limites do que seria esperado, você provavelmente evitará byte e sbyte porque seus intervalos são muito baixos.

Além disso, você provavelmente não precisaria de int, long, uint e ulong, porque eles podem armazenar mais dados do que é necessário. Da mesma forma, você provavelmente ignoraria float, double e decimal se não precisasse de valores fracionários. Você provavelmente ficará em dúvida entre short e ushort, e ambos podem dar certo. Se você sabe que um valor negativo não tem sentido no aplicativo, pode escolher ushort (inteiro positivo sem sinal, de 0 a 65.535). Agora, qualquer valor atribuído a uma variável do tipo ushort fora do limite de 0 a 65535 geraria uma exceção, o que ajuda sutilmente a impor um grau de verificação de sanidade em seu aplicativo.

Comece escolhendo o tipo de dados correto para os dados (não para otimizar o desempenho)

Talvez você considere escolher o tipo de dados que usa o menor número de bits para o armazenamento de dados, achando que isso aprimorará o desempenho do aplicativo. No entanto, alguns dos melhores conselhos relacionados ao desempenho do aplicativo (ou seja, a velocidade de execução do seu aplicativo) é não "otimizar prematuramente". Não tente modificar as coisas nas partes do código, incluindo a seleção dos tipos de dados, que pode afetar o desempenho do aplicativo.

Muitos pressupõem que, como um determinado tipo de dados armazena menos informações, ele deve usar menos o processador e a memória do computador do que um tipo de dados que armazena mais informações. Em vez disso, você deve escolher o ajuste correto para seus dados e, posteriormente, pode, de maneira empírica, medir o desempenho do seu aplicativo usando um software especial que fornece insights reais para as partes do seu aplicativo que afetam negativamente o desempenho.

Escolher tipos de dados com base nos tipos de dados de entrada e saída das funções de biblioteca usadas

Suponha que você queira trabalhar com um intervalo de anos entre duas datas. Como esse é um aplicativo de negócios, você pode determinar que só precisa de um intervalo entre cerca de 1960 a 2200. Isso pode fazer você pensar em utilizar byte, pois ele pode representar números entre 0 e 255.

No entanto, quando você examina métodos internos nas classes System.TimeSpan e System.DateTime, percebe que elas aceitam valores do tipo double e int. Se escolher sbyte, você constantemente estará transmitindo para frente e para trás entre sbyte e double ou int. Nesse caso, poderá fazer mais sentido escolher int se você não precisar de uma precisão de subsegundos e double se você precisar de uma precisão de subsegundos.

Escolher tipos de dados com base no impacto em outros sistemas

Às vezes, é necessário considerar como as informações serão consumidas por outros aplicativos ou outros sistemas, como um banco de dados. Por exemplo, o sistema de tipo do SQL Server é diferente do sistema de tipo do C#. Como resultado, um mapeamento entre os dois deve acontecer antes que você possa salvar dados nesse banco de dados.

Se a finalidade do aplicativo for a interação com um banco de dados, você provavelmente precisará considerar como esses dados são armazenados e em qual quantidade. A escolha de um tipo de dados maior pode afetar a quantidade (e o custo) de armazenamento físico necessário para armazenar todos os dados gerados pelo aplicativo.

Em caso de dúvida, vá pelo caminho mais simples

Embora você tenha feito várias considerações, você está apenas começando. Por isso, para simplificar, você deve preferir um subconjunto de tipos de dados básicos, incluindo:

  • int para a maioria dos números inteiros
  • decimal para números que representam dinheiro
  • bool para valores true ou false
  • string para valor alfanumérico

Escolha tipos complexos especializados para situações especiais

Não reinvente os tipos de dados se um ou mais já existirem para uma determinada finalidade. Os seguintes exemplos identificam quando um tipo de dados .NET específico pode ser útil:

  • byte: para trabalhar com dados codificados provenientes de outros sistemas de computação ou que usam diferentes conjuntos de caracteres.
  • double: para trabalhar com fins geométricos ou científicos. double é usado com frequência ao criar jogos que envolvem movimento.
  • System.DateTime para um valor de data e hora específico.
  • System.TimeSpan para um intervalo de anos/mês/dias/horas/minutos/segundos/milissegundos.

Recapitulação

Há considerações ao escolher tipos de dados para um código e, geralmente, mais de uma opção. Pense em suas escolhas e, a menos que você tenha um bom motivo, tente manter os tipos básicos, como int, decimal, string e bool.