I've had a couple of discussions with a co-worker about the use of single letter variable names in certain circumstances inside our codebase, at which we both disagree.
He favours more verbose naming convention for these, and I do not.
There are three scenarios in my opinion where I use single letter variable names:
- Loops -
i
for(int i = 0; i < 10; i++) { ... }
- Lambda expressions in C# -
x/y/z
:.Where(x => x == 5)
- Exceptions -
e
:try { ... } catch(ExceptionType e) { /* usage of 'e' */ }
These are the only scenarios where I would use it, and I obviously use more verbose naming conventions elsewhere.
My colleague put forward the following arguments for exceptions and loops:
i
- it doesn't mean anything.e
- it's the most common letter in the English language. If you wanted to search the solution for exceptions, you'd find lots of undesired instances ofe
.
I accept these arguments, but have retorts that, if one does not know what i
means in a for loop, then they probably shouldn't be a programmer. It's a very common term for loops and exceptions, as is e
. I have also mentioned that, if one wanted, they could search for catch
in the case of the exception.
I realise that this is subjective, but then, one could argue that coding standards are just that - opinions, albeit opinions by academics.
I would be happy either way, and will forward the results to him, but would rather that we (our company) continue to use a single coding standard, rather than have two developers with different opinions on what to use.