Click here to Skip to main content
Click here to Skip to main content

Tagged as

Can the C# ‘var’ keyword be misused?

, 25 Jul 2011 CPOL
Rate this:
Please Sign up or sign in to vote.
Misuse of the C# var keyword.

More and more often I've been seeing C# code like this:

var Data = GetData();

What on earth does GetData() return? This code is not as maintainable as it could be and is not as maintainable as it should be.

Doesn't explicitly declaring the variable type make the code more readable, understandable, and ultimately more maintainable?

DataTable Data = GetData(); 

Ahhh, GetData() returns a DataTable.

I know that var has uses but I wish it would have been named something much longer because typing 'var' is too easy. Perhaps it should have been named AutomaticTypeVar or even AutoVar to reduce the lazy misuse.

Just my 2 cents.

 
[Update]
A user on the Asp.Net forums was kind enough to provide this quote and link:

"However, the use of var does have at least the potential to make your code more difficult to understand for other developers. For that reason, the C# documentation generally uses var only when it is required."

http://msdn.microsoft.com/en-us/library/bb384061.aspx[^]

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Steve Wellens
EndWell Software, Inc.
United States United States
I am an independent contractor/consultant working in the Twin Cities area in Minnesota. I work in .Net, Asp.Net, C#, C++, XML, SQL, Windows Forms, HTML, CSS, etc., etc., etc.

Comments and Discussions

 
AnswerYes, it can... Pinmemberzyrconium137-Jan-13 21:06 
While I do agree that the 'var' keyword can be abused, I think the example given is not as eloquent as it could be. I think the problem here is the name of the method which is to generic and does not provide enough information about the purpose of the method. You would have the same problem even if the variable would be explicitly typed and the assignment of the variable somewhere far away in the code, like:
 
DataTable table;
...
table = GetData();
 
You still would not be able to know the type of the variable just by looking at it.
 
PS: I am being redundant, I know...
GeneralRe: Q: How do you know "he" named the method GetData? A: You don... PinmemberAdrian Cole17-Dec-11 21:22 
GeneralRe: The name has nothing to do with it. The return type of GetDa... PinprotectorHeath Stewart10-Jul-11 18:02 
GeneralReason for my vote of 5 var was added to support Linq, where... PinmemberPIEBALDconsult4-Jan-12 9:17 
GeneralRe: That's funny...but keep your day job. I'm not a big fan of ... PinmemberSteve Wellens4-Jan-12 11:08 
GeneralReason for my vote of 5 You are preaching to the choir here.... PinmemberMarcus Kramer1-Nov-11 8:09 
GeneralI still don't see what the big deal is. Wanna know what Get... Pinmemberspring19751-Aug-11 11:19 
GeneralCore problem in "var" declarations is inability of someone w... PinmemberKelqualyn26-Jul-11 1:17 
GeneralReason for my vote of 5 I would totally agree with Steve: us... PinmemberDrABELL25-Jul-11 18:37 
GeneralWe have a simple rule for the use of var: it may ONLY be use... Pinmemberchrisbray18-Jul-11 12:51 
GeneralReason for my vote of 5 I couldn't agree more. Intellisense ... PinmemberBloodyBaron18-Jul-11 12:01 
GeneralI coulnd't agree more with you, Steve :p PinmemberBloodyBaron18-Jul-11 11:59 
GeneralI was being facetious. Hover your mouse over this: va... PinmemberSteve Wellens17-Jun-11 3:33 
General>> We got intellisense that can tell us >> how to handle th... PinmemberSteve Wellens14-Jun-11 2:57 
GeneralRe: Two ways IntelliSense can help you: * Hover over it with you... Pinmemberisaks17-Jun-11 3:30 
GeneralRe: jgauffin is absolutely correct. The problem is not on the le... PinmemberIAbstract18-Jul-11 12:03 
GeneralRe: It's a poor programmer who writes such code. The var keyword... PinmemberDave The Brave21-Jul-11 5:21 
GeneralThe problem is not the "var" keyword, but that you have name... Pinmemberjgauffin13-Jun-11 21:37 
GeneralRe: I concur, the problem is not the var keyword, the problem is... PinmemberDave The Brave21-Jul-11 5:20 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.141220.1 | Last Updated 25 Jul 2011
Article Copyright 2009 by Steve Wellens
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid