@graydon My thinking is always that the vast majority of code receives at least a second visit, because a bug needs to be fixed or it needs to be extended etc..
So, assuming that second visit will happen, you can weigh up the time needed to make it more readable while the context is fresh in your head, with the time needed for deciphering during the second visit.
And since deciphering unreadable code can take quite long, even a big invest into readability is likely still economical.