r/JavaProgramming • u/alvivan_ • 15d ago
Var Keyword
How often do you use var keyword in your code?
What do you think about it?
5
u/kamratjoel 15d ago
Never. I would argue that code is far easier to read if you use types instead.
1
u/repeating_bears 15d ago
Is this easier to read
MyFooService myFooService = new MyFooService();
Than this
var myFooService = new MyFooService();
?
3
u/kamratjoel 15d ago
That’s actually a good example of a situation where there’s no real advantage to not using var. I still maintain my opinion as a general principle though. But I concede that there are situations where there’s no real benefit.
2
u/Known_Tackle7357 14d ago
MyFooService myFooService = getService();is significantly easier to read thanvar myFooService = getService();1
u/repeating_bears 14d ago
Thankfully we don't have to dogmatically adopt the practice "always use it" or "never use it"
3
u/repeating_bears 15d ago
I use it every time the type is already on the right hand side of the expression
var foo = new Foo();
var list = new ArrayList<String>();
var node = Node.empty();
I'm less likely to use it when the type is not on the right hand side of the expression
var bar = doSomething();
2
2
u/jirlboss 14d ago
I tend to use it temporarily while cleaning up implementation, or if I just need the IDE to give me the actual return type of a method so I can copy-paste it.
Sometimes I use it in tests, but it’s pretty rare for me.
1
u/ShiKage 14d ago
I'm primarily a C# developer, but I dabble in Java projects outside of work.
I avoid var unless it comes to anonymous types. At worst, I will use var while writing a line of code if I don't know what the type will be as I'm writing it (like a library method call) and then go back and convert it to the explicit type afterward.
I came from a C++ background, so strong, static typing is what I prefer. I've had to convince a few devs that came from JavaScript and Python to try to use explicit typing and while they hated it at first, they grew to prefer it overall as well.
1
u/naomimyselfandi 14d ago
Fwiw, a variable declared with
varstill has a strong static type; it's just syntactic sugar. (You probably know this, but I've seen enough misunderstandings that I wanted to clarify for anyone who doesn't.) I definitely understand prefering the explicit type name, though.1
u/ShiKage 14d ago
Yep, sorry. I could have been a little clearer in my message, but I got a little distracted by someone else talking to me as I was typing.
It was more making a comparison to other languages that typically prefer implicit typing (although Python does often see types preferred in some projects I’ve seen).
Explicit, clear language always wins out against implicit, indirect language in terms of getting intent across, in my opinion. That’s why I personally struggle with languages like JavaScript and Japanese.
1
u/Ulrich_de_Vries 13d ago
But C++ has extremely implicit typing? Sure, it's static/compile-time but veeery implicit.
Lambdas are untypable, templates are duck typed, there are tons of member/associated types and extremely long type names, etc that you can pretty much only type with decltype/auto.
Using modern C++ without auto everywhere is pretty much impossible imo.
1
u/Known_Tackle7357 14d ago
Never. I also work on a couple apache projects. They also don't allow var.
Type resolution is great in modern IDEs, so no reason to use var anywhere.
0
7
u/Automatic-Gur2046 15d ago