When I’m doing coding interviews I always like to start off and say I’m a big fan of very long variable names. “As descriptive as you can be” I say. Then I get to my first for loop. Instead of i I use “iterator” and then when I start a nested loop I use “jiterator” and it always gets a laugh.
I used to conduct coding interviews at my old job. If someone came in and had some humor like that, it would be big bonus points in my book. Being someone I would like to be on a team with is very important. Plus, I think it shows confidence and being comfortable in situations that make most people nervous.
I’ve been at two start ups and they had me interview people. Honestly this is what I looked for. I’d ask basic questions to prove you had an idea about coding, but I can teach someone to code, I can’t teach someone to be someone I like working with.
i is for index. j is simply the next letter and we’re too lazy to think up something meaningful
It depends. x
and y
are either elements or coordinates, a
and b
usually elements though in e.g. Haskell reserved (by convention) for type variables.
The i
j
k
l
series is reserved for indices. n
m
etc. are the counts of something, as such you’ll see i
counting up to n
. Both are due to mathematical sum notation and general mathematical convention. Random google result:
Let x1, x2, x3, …xn denote a set of n numbers. x1 is the first number in the set. xi represents the ith number in the set.
…if you’re using a language in which you use i
often chances are you should stop coding in C and get yourself a language with iterators. Manual loops are a bug magnet.
It’s a shame iterators in JS are trash for memory if you have a giant array
A useful tip I picked up was to use ii
instead of j
for an inner loop. It’s far more distinct than j
.
If for some terrible reason you have even more inner loops you can easily continue the trend i
, ii
, iii
, iiii
, iiiii
- or iv
, v
if you’re feeling roman
When you have multiple indices you’re also bound to have multiple cardinals those indices count up to, say foo.length
and bar.length
, so foo_i
and bar_i
are perfectly legible and self-documenting. A bit Hungarian but Hungarian is good in small amounts. Unless you’re dealing with width
and height
in which case it’s x
and y
but it’s not that width_i
would be incomprehensible.
x is used for map, filter, etc. a and b are used for sorts, comparisons and merges. y might be used if I’m doing multiple lambda expressions (but that means I’m in a bad place already). I have no idea why, but these are firm rules in my brain.
I’ve gotten used to using the singular form as in…
records.filter((record) => …)
Not saying this way is better but it works for me.