logoalt Hacker News

grebctoday at 7:25 PM2 repliesview on HN

I’ve never ever heard while described as a smell, or even slightly smelly.

Care to explain?


Replies

theamktoday at 7:56 PM

I assume OP refers to the cases where "while" is used to re-implement existing operations... imagine finding code like this:

     i = 0
     while i != len(todo):
         process(todo[i])
         i = i + 1
sure, there may be a good reason to implement things this way (maybe "todo" grows during iteration?), but maybe not, and then the loop should be instead simplified to:

     for value in todo:
         process(value)
(as an aside, this is exactly the case where the comments are required: "# not using for loop because todo might grow" will make it clear it's an intentional decision and not hallucination or something written from ignorance)
show 1 reply
polonbiketoday at 7:39 PM

If you can smell it, there's something fishy in the neighborhood