.NET

27 ago, 2020

Fundamentos .NET Framework — Value Types

Publicidade

Confesso que demorei um bom tempo na minha carreira para entender que normalmente ou quase sempre os fundamentos da computação ou os fundamentos de um framework que eu havia escolhido para trabalhar profissionalmente eram mais importante que qualquer “shinning magic hype que o mercado está usando ou aconselhando a usar”.

Sim, normalmente (e normalmente quando estamos iniciando) somos induzidos a acreditar em soluções de prateleira que resolve todo e qualquer problema. Minha dica para você que está iniciando ou caiu no mesmo dilema é: Cuidado com isso.

Comigo não foi diferente. Quando iniciei há algum tempo atrás a minha sede de produzir era maior do que a minha sede por entender como as coisas funcionam. E por muito tempo isso foi acontecendo até que eu vi que era um Sênior de empresa. Eu era muito bom no que fazia (na empresa) que trabalhei por anos mas quando mudei para outros negócios, eu fui literalmente engolido pela falta de habilidades técnicas que não havia vivenciado pois estava imerso em uma única linha de negócio (a da empresa que atuava).

Depois disso, resolvi voltar ao zero. Eu já tinha experiência suficiente para reconhecer que precisava melhorar minhas habilidades básicas e sabia que elas me ajudariam em situações futuras. Na prática, parei de me preocupar com soluções (entenda frameworks) que faziam coisas que na verdade eu não entendia bem, era só chamar o método e tudo estava resolvido.

Depois que me tornei Microsoft MVP em 2018, de certa forma algumas pessoas começaram a me procurar para pedir conselhos de como ser um profissional melhor e quais caminhos eu indicava. Minha resposta desde então é a mesma: saiba muito bem os fundamentos do que você faz.

Decidi iniciar alguns posts sobre fundamentos do .NET Framework para ajudar e influenciar as pessoas a realmente serem mais curiosas, entender como os fundamentos ajudam sempre e produzir soluções mais elegantes e, sempre que possível, mais simples.

.NET Framework

Não explicarei o que é o .NET framework, uma simples pesquisa na documentação da Microsoft lhe dará toda essa informação. Porém, na minha visão, para começar a falar do .NET Framework, precisamos antes falar de Tipos de dados.

O que você sabe sobre tipos de dados? Você já se perguntou como o framework aloca os dados que você cria e manipula no seu software? Você já se perguntou se realmente está usando o tipo de dado correto para aquela determinada solução? Confesso que demorei para entender isso lá no começo e revendo os fundamentos, foi um divisor de águas para mim.

Value Types

Os tipos mais simples no .NET Framework, por exemplo, tipos numéricos e booleanos são Value types.

Value Types são variáveis que contém o seu próprio valor ao invés de conter uma referência para os dados salvos em algum outro lugar na memória. Instâncias do tipo valor são salvas em uma área da memória chamada Stack, onde o runtime pode criar, salvar, alterar e remover rapidamente com o mínimo de overhead.

Na prática temos três tipos gerais de para representar dados, sendo eles:

  • Value data types
  • Pointer data types
  • Reference data types

Dando ênfase nos value data types, temos ainda os tipos pré-definidos (built-in) do framework que são representados por valores inteiros, booleanos e floats, etc ,e os tipos definidos pelo programador (user defined types) que podem ser enumerações, structs, etc.

Tipos de dados — Fonte: https://static.javatpoint.com/csharp/images/csharp-data-type1.png

Declarando Value Types

Na prática utilizamos muito os value types em nosso dia-a-dia como programadores. Uma declaração de value types é tão simples como o exemplo abaixo:

//variável do tipo valor, será alocada na memória em uma área chamada stack
var idade = 33; Normalmente a declaração dos tipos valores são efetuadas dentro de métodos e como dito anteriormente, enviados a stack onde a variável é responsável por armazenar seu próprio valor.

Na imagem abaixo também podemos visualizar outra área na memória, a Heap, que será pauta do próximo artigo.

Stack e Heap — Fonte: https://www.c-sharpcorner.com/article/stack-heap-value-type-and-reference-type-in-c-sharp/Images/1.jpg

Conclusão

Nesse artigo foi demonstrado o que são value types no .NET Framework e a importância de ter esse entendimento enquanto pessoas programadoras. O pleno entendimento de como as coisas funcionam nos tornam profissionais melhores e com mais embasamento para tomar decisões técnicas nos projetos em que atuamos.