This is a fun little story. A few months ago I wrote the following function, due to a need to get the index of a specific occurrence of a character...
For further actions, you may consider blocking this person and/or reporting abuse
I don't necessarily think that
forloops are inherently easier to read thanwhileloops, but I think if you're doing a typical incrementing/decrementing-iterator-variable loop it probably makes more sense to useforsince that's the reasonforexists.I'll typically only use
whileif I need to check some other sort of condition that doesn't fall neatly into that pattern. As an example, I'm currently building a syntax highlighter for the web (mostly for fun), and I have a method like this:tokenizetries to match the beginning of the line (which is a string) for a number of different regex patterns, assigns the match a token, and then removes the match from the front of the line. So each time it's done, the line will be a little shorter, but it's impossible to know by how much ahead of time, which makes thewhileloop the correct tool for the job in this particular case. That's my thinking anyway.Hi, in this case i find the for loop way more developer friendlier and easier to understand. Thanks for sharing this.
I am trying to understand as to why is a
for loopfriendlier than awhile loopbecause to I've heard a similar thing for
switchesin the past compared toifsI don't think the code comprehension problems have anything to do with the type of loop, but with the density of the code. If I look at the while loop you wrote, I do not only see a condition, but also up to two side effects (depending on whether or not the evaluation is short-circuited). This single line has up to four different responsibilities.
I actually think a while loop is the more suitable option, but maybe the introduction of one or two explanatory variables could enhance readability a lot.
Code comprehension though is not always a objective term. Sometimes it heavily depends on a person's perception. Throughout my career I've seen different styles of coding and I tend to accept them.
In this case they felt that
foris more readable so I let them change it (for me it's tom[a]to, tomat[o]). Now if they chose, to do it with recursion, again I wouldn't object to it.Recursion is another fine example of a style. Some people love it, it make sense to them. Others are afraid of it.
once we had a guy that only wrote decrementing-for-loop...nowadays everyone hates his
legacycode. But if you ask me...they get stuck at details and not the big picture, and the big picture is that he code was a freaking masterpiece. Sometimes hard to read, but he wrote the most resilient consumer services I've ever seen.