Por que no Java é necessário especificar o tipo de variável?

Pra mim não atrapalha mas também não ajuda.

Pra mim há outros aspectos em um projeto que são os responsáveis por atrapalhar a produtividade, não é a sintaxe e semântica da linguagem utilizada.

Kkk eu tbm. Alguém vai usar? Só o tempo dirá… Os “véio” aqui, me incluindo nessa, vão continuar com os tipos.

Entendi, gente, valeu.

Mas nossa, como nossas preferencias diferem, @j-menezes. Eu odeio quando vejo coisas como vc exemplificou:

UsernamePasswordAuthenticationToken authToken = null;
/* algumas linhas depois */
authToken = new UsernamePasswordAuthenticationToken("user", "pass");

Eu gosto de instanciar no escopo mais fechado possível e saio botando final em tudo que é possível, pois me dá mais segurança pra trabalhar no código:

final UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken("user", "pass");

Isso nos meus projetos pessoais, porque ainda não trabalho profissionalmente com Java.

Minha maior queixa trabalhando com PHP é não poder contar com um let ou um var, um const ou um final.

É questão de evoluir ou parar no tempo. Pelo menos nesse ponto de inferir o tipo baseado no valor o Java evoluiu. É muito mais ágil enquanto estamos escrevendo, que é a maior parte do tempo gasto. Por ter ganhado isso muito tarde complica adoção e cria resistência por quem está viciado na forma clássica do Java. Fora a mistura, onde o pessoal mais fora da caixa do Java usa o var e o pessoal mais velho fica colocando diretamente o tipo.

var, não é evolução do Java coisa nenhuma tão pouco variavel dinamica ou mutavel seja algo moderno.
Programei assim em DBase/Clipper por bom tempo em sistemas comerciais, que já tinham variaveis dinamicas e eram chamadas de linguagens de 4a geração.

O que determina a velocidade de construção do programa não são usar ou não “var(s)”, isso tem a ver com o conhecimento em sí, logica de programação, algoritimos, experiencia,
enfim…

Vish, mas variável dinâmica (no sentido de o tipo poder mudar durante a execução do programa), se um dia tiver, seria uma coisa péssima no Java.

Mas por que vc citou isso? É que uma das principais características do Java é a tipagem forte e estática, isso não vai mudar nunca eu acho.

Se não fosse evolução, nao teriam decidido introduzir o var, pra inferir o tipo através do valor. Nao estou falando de variavel dinamica. E olha que isso só entrou a partir do Java 10.

Evolução é a modularização, inline, não var nem record

Isso na visão de quem acha isso. Pra quem mantem a linguagem não.

Sim, mas é que antes estava me referindo a python.

E sobre as switch expressions e o instanceof pattern matching?

Isso são coisinhas, que não quebram a essencia da linguagem em si, mas, precisa ver se compensa pegar um onibus ou um carro pra ir daqui até na esquina.

1 curtida

Isso multiplicado pela quantidade de variáveis em um projeto.

Isso nunca me atrapalhou, pra mim não fede nem cheira. Tem coisas mais importantes para me preocupar.
É que não sofro de neurose como parece ser seu caso, mas se Eu for contar aqui quantos
switch e instanceof tem no programa, é uma quantidade ridicula.

No meu caso, eu gasto muito mais tempo lendo e entendendo código alheio. Mas cada caso é um caso, e nem acho que é o var que vai ser a grande solução (pode ajudar, mas acho que o peso disso será bem pequeno - no meu caso mudaria bem pouco).

O pior mesmo é quando preciso rodar npm install, isso sim me faz perder muito tempo…

1 curtida

Isso se chama costume, entendo isso. Assim como muitos não percebem o quanto o Java é burocrático pra comparar diretamente datas e números decimais com precisão, tendo que usar métodos ao invés de simples operadores como na maioria das linguagens.

Escuta, ninguem aqui tem culpa de voce ser ruim de Java ou preguiçoso.
Escrevo tudo isso em Java com os olhos fechados e rapidamente.

Eu duvidei quando vc disse que “a maioria das linguagens consegue comparar datas só com operadores simples”, aí eu fui ver aqui, mas não sei se é bem assim.

De qualquer forma a API de datas é super robusta e permite fazer bem mais que só dizer se uma data é maior, menor ou igual a outra.

Vc consegue somar ou subtrair qualquer unidade de tempo, consegue converter as time zones, ela leva em consideração as diversas Locales, é incrivel!

2 curtidas

Sei que você não respondeu pra mim esse topico, mas somente pra reforçar já tive serios problemas em outras linguagens nessa questão,

1 curtida

Digo comparações simples como >=, que é o mais corriqueiro.

1 curtida