Departamento de Declaração Departamento de Redundância

Às vezes (na verdade, muitas vezes) eu retrocedo alguns anos mentalmente e me esqueço de aproveitar os novos recursos oferecidos pelas ferramentas que estou usando. Nesse caso, estamos usando a versão mais recente e melhor do C#, que oferece variáveis locais tipadas implicitamente. Enquanto trabalhando no Stack Overflowfiquei absolutamente entusiasmado por poder refatorar esse código:

StringBuilder sb = new StringBuilder(256);
UTF8Encoding e = new UTF8Encoding();
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();

Para isso:

var sb = new StringBuilder(256);
var e = new UTF8Encoding();
var md5 = new MD5CryptoServiceProvider();

Não se trata de tipagem dinâmica, por si só; o C# ainda é uma linguagem com tipagem estática. É mais um truque do compilador, um passo de bebê em direção a um mundo de Tipagem estática sempre que possível e tipagem dinâmica quando necessário.

Esse pode ser um truque barato de compilador de salão, mas é bem-vindo. Ao escrever código C#, às vezes me sentia como se tivesse entrado na Departamento de Redundância Departamento de Redundância.

departamento de redundância departamento.

Claro, há momentos em que deixar de declarar explicitamente o tipo de um objeto pode prejudicar a legibilidade e a manutenção do seu código. Mas ter a opção de declarar implicitamente o tipo também pode ser uma grande melhoria na qualidade de vida para a codificação cotidiana.

Há sempre um troca entre verbosidade e concisãomas é muito difícil para mim defender a forma desnecessariamente detalhada com que os objetos eram declarados em C# e Java.

BufferedReader br = new BufferedReader (new FileReader(name));

Quem inventou essas coisas?

Existe realmente alguma dúvida sobre o tipo da variável br? É útil para alguém, alguma vez, exigir outro BufferedReader na frente dessa linha? Isso tem me incomodado há anos, mas era uma coceira que eu simplesmente não conseguia coçar. Até agora.

Se isso faz sentido para o senhor, por que não inferir tipos de dados mais fundamentais também?

var url = "http://tinyurl.com/5pfvvy";
var maxentries = 5;
var pi = 3.14159;
var n = new int[] {1, 2, 3};

Eu uso a digitação implícita de variáveis sempre que isso torna meu código mais conciso. Qualquer coisa que remova a redundância do nosso código deve ser buscado de forma agressiva – até e incluindo a troca de idiomas.

O senhor pode até dizer que a tipagem implícita de variáveis é uma porta de entrada para linguagens com tipagem mais dinâmica. E isso é bom.