Executando verificação de segurança...
3

Vamos falar sobre - Tipagem

Olá a todos, sigo com esse projeto de trazer meus estudos aqui e compartilhar com os novatos como eu para evoluirmos juntos!

Quando falamos de tipagem estamos falando do sistema de TIPOS adotados nessa linguagem, com a modernização de linguagens e novas linguagens esse termo anda mais flexível, visto de modo que não há um consenso universal sobre esse assunto, mas sim consensos de hábitos ruins e comparações dos TIPOS entre as linguagens.

Começando do básico vou listar alguns TIPOS básicos essênciais em C# para exemplificar:

Tipo Estático


int NúmeroInteiro = 5;
float NúmeroNãoInteiro = 3.14f;
bool ValorBooleano = true;
string Texto = "hello World!";
NúmeroInteiro = "Hello World!";
/* Não é possível converter um TIPO int em TIPO string */

Uma variável de tipo estático não pode mudar seu tipo.

Tipo Dinâmico


dynamic QualquerVariável = 5;
QualquerVariável = "Hello World!";

Uma variável de tipo dinâmico pode mudar seu tipo.

Mas se c# suporta tipagem dinâmica, por quê eu perderia tempo definindo o tipo da variável?

Existem algumas razões do porque não é uma boa ideia utilizar tipagem dinâmica comumente pelo menos nessa linguagem, primeiro vamos pensar na legibilidade do código, se todas as suas variavéis podem mudar de valor a qualquer momento, como seria feita a manutenção do código? Uma simples conta em float transformada em int poderia quebrar todo o programa.

Outra questão também é o desempenho, ao compilar o tipo dinâmico, a informação do tipo da variável tem que ser buscada a todo instante, pois ela pode mudar ao decorrer da execução, escondendo assim algumas quebras de códigos que poderiam ser relatadas antes mesmo de executar.

Comparação

Tipagem estática Tipagem dinâmica
Descobre erros antes Descobre erros no último momento
O código costuma ser mais legível. Os tipos aparecem no código ou o IDE consegue mostrar O programador precisa entender e documentar o código para saber os tipos e nunca é garantido
Fornece melhor semântica para o código A tipagem funciona mais como um mecanismo
Fornece melhor perfoemance na maioria dos casos A performance é inferior
Segurança Concisão
Qualquer alteração no problema exige mudança no código Alterações podem ser assimiladas sem alteração no código específico
Ferramentas de desenvolvimento possuem mais informações e podem ajudar mais o programador É dificil ou impossível criar/usar determinadas ferramentas que ajudam o programador
Regras do objeto são bem definidas e fixas Regras variam com o estado do objeto
Facilita a formalização Facilita o experimento
Rigidez Flexibilidade
Mais difícil de aprender e usar Mais difícil de manutenção
Reduz a necessidade de testes Exige testes em cima dos tipos
Reutilização de código é mais complicada Reutilização de código é mais arriscada
Metaprogramação é complicada Metaprogramação é mais fácil
Facilita grandes programas Facilita pequenos programas

Conclusão

Como eu disse, não existe um consenso global sobre esse assunto e tudo depende da situação que cada uma será usada, existe muitos termos mais profundos nesse assunto ainda, mas até agora foi o que eu pude aprender.

Se o uso de determinada tipagem pode facilitar a compilação do seu programa então cabe a você decidir qual delas vai usar.

Sintam-se livres para corrigir se eu errei alguma coisa!

Carregando publicação patrocinada...
2

achei a explicação bem legal, não havia lido muito sobre o tipo dinâmico antes, sabia q ele existia no c#, porém desconhecia seu uso. Obrigado por exemplificar de maneira rápida!

1

Obrigado pela referência.

Farei algo que muitos pedem para aprender programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).