wesmcclure >>
How in the world does 'var' add readability to you?
first of go to this link and check the folowing statement at the bottom: (
http://msdn.microsoft.com/en-us/library/bb384061.aspx)
"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."
It is funny that is the exact opposite opinion.
And now, explain to me how this is more readable to you:
public void DoStuff(IMemberProvider memberProvider)
{
var members = memberProvider.RetreiveMembers();
Console.WriteLine(members.ToString());
... Do more stuff with members.
}
See what I did there?... you have absolutely NO clue what so ever to as what members is, could be a list, could be some sort of repository, could be an array...
All we do know, is that it is most likely something that contains members.
(unless you have the entire project AND uses an IDE... suddenly code becomes much more painfull to read since you need to interact with your IDE to understand it)...
I can at all time except the "var" keyword if its used as:
public void DoStuff(IMemberProvider memberProvider)
{
var members = new List<IMember>();
memberProvider.AddMembers(members);
... Do more stuff.
}
In the above you suddenly know for sure what 'members' is, does it improve readability?... I wouldn't say so, but maybe that is because I read from Left to right...
(like most people reading English)...
or maybe you prefere naming conventions as:
public void DoStuff(IMemberProvider memberProvider)
{
var listOfIMemberMembers = memberProvider.RetreiveMembers();
Console.WriteLine(listOfIMemberMembers.ToString());
... Do more stuff with listOfIMemberMembers.
var listOfIMemberAdmins = memberProvider.RetreiveAdministrators();
Console.WriteLine(listOfIMemberAdmins .ToString());
... Do more stuff with listOfIMemberAdmins.
}
Having to embed the type in the name is something at least I learned a long time ago that I didn't like. In the above we even have some ugly redundancy
for the first few lines ('listOfMember' describes the type, 'Members' descripe the content).
I will at ANY time prefer the following dumb of code, and I will ALWAYS claim that is more readable that any of the above...:
public void DoStuff(IMemberProvider memberProvider)
{
List<IMember> members = memberProvider.RetreiveMembers();
Console.WriteLine(members.ToString());
... Do more stuff with members.
List<IMember> admins = memberProvider.RetreiveAdministrators();
Console.WriteLine(members.ToString());
... Do more stuff with members.
}
(Also keep in mind 'var' was introduced BECAUSE it was needed for anonumous types)