Refactoring: Improving the Design of Existing Code

Refactoring is the act of changing code without changing it's functionality. This is a catalogue of step-by-step techniques to apply those refactorings to code. Website Amazon

The first edition was done in Java, the second in JavaScript. Flower makes it clear this choice was to have the greatest reach and is not an endorsement.