My take on “Clean code challenge: Unspiral”

Kunal Marwaha
Nov 23, 2018 · 2 min read

Programming involves a number of tradeoffs (not limited to readability, extensibility, comprehension, brevity, and speed).

I agree that the biggest drawback about the initial solution is that another programmer (or, yourself in a few months) cannot quickly understand what is happening. It is optimized at the expense of comprehension (a mathematical formula, not its proof). To boost comprehension of the initial solution, one could add a proof sketch in a short (1–2 line) comment.

I don’t usually write with extensibility in mind. Often, I won’t need or can’t imagine ways I’ll need to adjust or generalize a snippet of code. Also, an “elegant” proof or “optimized” solution may exploit specific symmetries or conditions that do not extend well. (For example, making decisions based on j > i relies on the end of the loop being at i === j .)

The solution below follows an “intuitive” proof (walk backwards along the spiral until you reach the end of the last full loop). For this reason, it takes more lines of code but seems more easily comprehensible and extensible. (In fact, I initially misread your coordinates, finding out when my code didn’t pass your test cases. It was speedy and straightforward to draw out the spiral in a new orientation and update the logic accordingly.)

Probably, best practice for production-level code is somewhere in between the initial solution and the above one, depending on its purpose. At minimum, I like to give a brief sketch of “what is happening in this code”, especially if it is clever or cryptic. (My former coworker used to say he avoided writing code that was too clever, because when debugging, he had to be twice as clever. This motto prevented him from writing code he could not easily fix).

Let me know what you think. This is a neat puzzle!

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store