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