When I'm doing algorithmic work, I rewrite rather than refactor. Perhaps it's just me as a programmer, but it takes me three or four rewrites before complex and nasty algorithms begin to appear simple.
Also WRT abbreviations and again in algorithmic code: I love to use one-letter variables for 'working' variables. It forces me to reread what I've written and really understand what's going on, rather than take shortcuts based on what a variable name might imply.
Business logic "if the account balance is below $100 send a warning email" code need not apply ... for that stuff I just wade through same as anyone else, although I'm more apt to write code that writes code if I'm faced with a particularly high pile of the stuff.
Also WRT abbreviations and again in algorithmic code: I love to use one-letter variables for 'working' variables. It forces me to reread what I've written and really understand what's going on, rather than take shortcuts based on what a variable name might imply.
Business logic "if the account balance is below $100 send a warning email" code need not apply ... for that stuff I just wade through same as anyone else, although I'm more apt to write code that writes code if I'm faced with a particularly high pile of the stuff.