Lokální proměnné je od Javy 10 možné deklarovat s použitím klíčového slova var
. Přemýšlel jsem, k čemu tato změna je a začal jsem googlit. Narazil jsem na názor, že var
má snížit ukecanost (verbosity) Javy. Pokud máte lokální proměnnou, můžete ji deklarovat takto:
var name = "John";
var age = 25;
místo
String name = "John";
int age = 25;
Nevidíte v tom žádnou výhodu? Moc psaní jste neušetřili. Souhlasím. A co teď?
List<Map<String, Set<MyClass>>> cosi;
var cosi;
Zde již nějaké to psaní ušetříme, ALE. Pokud v kódu narazím na takovouto proměnnou a budu s ní pracovat, pravděpodobně si stejně zjistím, jakého je typu. Takže místo toho, abych to rovnou viděl, musím se prokliknout někam, kde je daný typ uveden např. CosiClass.getCosi()
;. A pokud používáte nástroje svého IDE, pravděpodobně tam je možnost, nechat si přiřadit návratovou hodnotu volání do proměnné (v Idea IDE to je Ctrl + Alt + V
), takže to stejně nepíši. Trochu mi to připomíná debaty na téma psaní getterů a setterů, kdy některé jazyky tyto metody generují automaticky na základně specifické syntaxe. V Javě je možné použít knihovnu Lombok a nebo nechat své IDE tyto metody vygenerovat. Asi teprve čas ukáže, zda se tato novinka mezi vývojáři uchytí.
Poznámka ke Kotlinu
Kotlin má var
(od variable) a val
(od value), kdy val je finální. Místo final String name
napíšete val name
.
fun main(args: Array) {
var str1 = "Ahoj"
val str2 = "Ahoj"
str1 = "Nazdar"
// str2 = "Nazdar" - Chyba: value cannot be reassigned
}
Doporučuji k přečtení tyto články:
beyondjava.net/should-you-embrace-var-in-java-10
openjdk.java.net/projects/amber/LVTIstyle.html