Niet zozeer een probleem, maar meer een discussie.
Ik plaatste vandaag een mooi stukje hobbycode met nogal veel gebruik van var erin (en iets te korte variabelenamen), en er kwamen gelijk wat reacties op het gebruik van type interference (var) in plaats van expliciete types (int, string, StringBuilder, enz.):
Ook in het verleden hebben meer mensen hier zich over het gebruik van var verbaasd:
De compiler/IDE lost het type-probleem wel op, en voor de leesbaarheid zijn ze vaak onnodig als je eenmaal aan var bent gewend. Wellicht met alle bool's en int in een for-loop als uitzondering. Dus niet:
De compiler kan dat best zelf uitzoeken! (De toekomst van C# deel 2)
Aantal voor- en tegenstanders
Resharper (v4) plijt voor var
Jeff Atwood (Coding Horror) plijt voor var
Can the C# ‘var’ Keyword be Misused?
MVP voor var
C# - Do you use “var”?
Het stukje "Overuse of var can make source code less readable for others." is overigens geschrapt uit de .NET-documentatie.
Mijn idee is dus dat het niet-gebruiken van var meestal iets uit het verleden is, en dat het wordt gedaan vanuit consistentie-oogpunt. In serieuzere code gebruik ik het nog weinig, maar in hobby-code zoals hier gebruik ik (zoveel mogelijk) var. In de toekomst voorzie ik dat var steeds meer gebruikt gaat worden. Misschien dat het ook wel aan java wordt toegevoegd.
Zijn er hier al mensen die var in professionele code zo vaak mogelijk gebruiken? Zijn er mensen die wel problemen met het (toenemend) gebruik van var voorzien?
BM schreef op dinsdag 09 februari 2010 @ 12:44:
offtopic:
Mag ik trouwens zeggen dat je irritant gebruik maakt van 'var'?
Dat laatste is overigens niet waar, de volgende declaraties leveren exact dezelfde IL/machinecode op:MBV schreef op dinsdag 09 februari 2010 @ 14:47:
offtopic:
viel mij ook al op ja. Heeft in deze context toch geen enkel nut, en kan toch ook voor een lagere performance zorgen? Los daarvan haal je alle voordelen van een strongly typed language weg, ga dan lekker ironPython gebruiken als je in .NET wilt spelen
C#:
1
2
3
4
5
| var integer = 100; int integer = 100; List<string> stringList = new List<string>(); var stringList = new List<string>(); |
Ook in het verleden hebben meer mensen hier zich over het gebruik van var verbaasd:
whoami schreef op vrijdag 11 januari 2008 @ 09:06:
Het is idd mogelijk om dat te doen, maar, het is -imho- bad practice om dat te doen als je het type kent.
Waarom zou je , in jouw voorbeeld die Blaat als var declareren als je het type kent ?
Als var enkel zou bedoeld zijn als 'shorthand', dan zie ik er het nut niet van in, en dan hadden ze eigenlijk var gewoon uit de specs kunnen halen.
RobIII schreef op donderdag 02 oktober 2008 @ 17:00:
Even iets compleet anders: waarom is alles "var" bij jou?
In mijn opinie is het gewoon minder tikwerk en (belangrijker) beter leesbaar om vaak var te gebruiken. Minder typwerk lijkt me duidelijk. Zelfs VS.NET is er standaard op ingesteld: typ "fore[tab][tab][tab]" in vs.net en je foreach-loopje met var staat klaar. Leesbaarheid is een kwestie van opinie, maar typenamen kosten nu eenmaal ruimte, die beter aan andere dingen kan worden besteed. En als je het type perse wil weten, zie je het type vanzelf als je de muis er even boven houdt in je IDE. In Google's nieuwe taal Go wordt ook een soort van var gebruikt, met als redenatie:Haan schreef op donderdag 27 augustus 2009 @ 13:26:
Nu het toch over Resharper gaat, er zit ook een optie in om C# code te 'upgraden' naar .Net 3.0, onderdeel daarvan is het gebruik van 'var' voor lokale variabelen, kan iemand misschien uitleggen wat het voordeel van is?
Waar ik me graag bij aansluit.Reduce typing. Let the language work things out.
No stuttering; don't want to see
foo.Foo *myFoo = new foo.Foo(foo.FOO_INIT)
Avoid bookkeeping.
But keep things safe.
Natuurlijk is dit ook op de rest van het internet een discussie:C#:
1 2 3 var selectedIsChild = NodeIsChildOf(TreeSelectedFeedsNode, selectedNode); var isSmartOrAggregated = (selectedNode.Type == FeedNodeType.Finder || selectedNode.Type == FeedNodeType.SmartFolder);
De compiler kan dat best zelf uitzoeken! (De toekomst van C# deel 2)
Aantal voor- en tegenstanders
Resharper (v4) plijt voor var
Jeff Atwood (Coding Horror) plijt voor var
Can the C# ‘var’ Keyword be Misused?
MVP voor var
C# - Do you use “var”?
Het stukje "Overuse of var can make source code less readable for others." is overigens geschrapt uit de .NET-documentatie.
Mijn idee is dus dat het niet-gebruiken van var meestal iets uit het verleden is, en dat het wordt gedaan vanuit consistentie-oogpunt. In serieuzere code gebruik ik het nog weinig, maar in hobby-code zoals hier gebruik ik (zoveel mogelijk) var. In de toekomst voorzie ik dat var steeds meer gebruikt gaat worden. Misschien dat het ook wel aan java wordt toegevoegd.
Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten