
Refactoring
by Martin Fowler · first published 1999
65% recommend33% neutral2% critical
Why HN recommends it
Walks through concrete code examples being broken into smaller, reusable parts, teaching repeatable techniques for improving existing code and showing what good OO code looks like. Suits working developers.
Summarised by Claude from recommending comments
As the application of object technology--particularly the Java programming language--has become commonplace, a new problem has emerged to confront the software development community. Significant numbers of poorly designed programs have been created by less-experienced developers, resulting in applications that are inefficient and hard to maintain and extend. Increasingly, software system professionals are discovering just how difficult it is to work with these inherited, non-optimal applications. For several years, expert-level object programmers have employed a growing collection of technique
Affiliate links. As an Amazon Associate I earn from qualifying purchases.








There's always the classics: https://www.amazon.com/Design-Patterns-Elements-Reusable-Obj... https://www.amazon.com/Refactoring-Improving-Design-Existing... EDIT: And it appears the website is a direct rip-off of these books.
on “Design Patterns and Refactoring” ↗Also, check out this refactoring book: http://www.amazon.com/Refactoring-Improving-Design-Existing-...
on “How does one learn about the latest advances in Computer Science (not fads) to apply and improve your work? ” ↗I cannot stress this enough: learn refactoring, http://www.amazon.com/Refactoring-Improving-Design-Existing-... You will simultaneously learn: - terminology and models relevant to software design and construction at every level - principles of…
on “Ask HN: When does programming start to make sense?” ↗…what object oriented programming means, then I'd recommend reading the Gang of Four book on Design Patterns (http://www.amazon.com/Design-Patterns-Elements-Reusable-Obje...) and Martin Fowler's book on Refactoring (http://www.amazon.com/Refactoring-Improving-Design-Existing-...). Those will give you a pretty good basis in software design and maintenance. In terms of recommended reading for learning a language,…
I think the best introduction to object oriented design is shown in the first chapter of Martin Fowler's book "Refactoring". He gives the example of a DVD rental shop that has to calculate the rental fee based on the type of DVD: - A New Release is $3 per day - A Children's DVD is $1.50 for three days, then $1.50 per day…
on “Goodbye, shitty "Car extends Vehicle" object-orientation tutorial” ↗Consider buying these books: http://www.amazon.com/Refactoring-Improving-Design-Existing-... http://www.amazon.com/Design-Patterns-Object-Oriented-Addiso...
on “Ask YC: What is "quality" code?” ↗Some books to read: http://www.amazon.com/Algorithm-Design-Jon-Kleinberg/dp/0321... http://www.amazon.com/Design-Patterns-Object-Oriented-Addiso... http://www.amazon.com/Refactoring-Improving-Existing-Addison... http://www.artima.com/shop/forsale
on “Ask YC: Study theory, or keep coding?” ↗Read Refactoring. http://www.amazon.com/Refactoring-Improving-Design-Existing-... In my view it is the single most important programming book in existence. Yes, other books will teach you other, incredibly important…
on “Books every self-taught computer scientist should read” ↗Refactoring: http://www.amazon.com/Refactoring-Improving-Design-Existing-... Read it. Learn it. Love it. Make it a habit that is so ingrained you do it automatically. Extract method: do it reflexively.
on “Tell, don't ask” ↗You'll want these: http://www.amazon.com/Working-Effectively-Legacy-Robert-Mart... http://www.amazon.com/Refactoring-Improving-Design-Existing-... http://www.bevmo.com/Shop/ProductDetail.aspx?ProductID=1282
on “I've inherited 200K lines of spaghetti code—what now?” ↗As the link by lttlrck also advocates: throwing shit out can easily be a mistake. More usually, http://www.amazon.com/Working-Effectively-Legacy-Michael-Fea... + http://www.amazon.com/Refactoring-Improving-Design-Existing-... can get you further, faster. Stuff keeps working while you incrementally improve it.
on “Top Surprises When Starting Out as a Software Developer” ↗"Refactoring: Improving the Design of Existing Code" http://www.amazon.com/Refactoring-Improving-Design-Existing-...
on “Ask HN: What's the best technical eBook you have read?” ↗I disagree with the premise that organizing code is not a recognized or appreciated skill among developers. At least not since this was published: http://www.amazon.com/Refactoring-Improving-Design-Existing-... Martin Fowler really struck a chord all the developers trying to do the right thing by cleaning up badly structured code, by giving the practice a name and explaining why…
on “Organizing complexity is the most important skill in software development” ↗…https://www.amazon.com/Clean-Code-Handbook-Software-Craftsma... https://www.amazon.com/Clean-Architecture-Craftsmans-Softwar... https://www.amazon.com/Patterns-Enterprise-Application-Archi... https://www.amazon.com/Refactoring-Improving-Existing-Addiso... https://www.amazon.com/Code-Complete-Practical-Handbook-Cons... https://www.amazon.com/Pragmatic-Programmer-Journeyman-Maste... https://www.amazon.com/Mythical-Man-Month-Software-Engineeri...…
on “Microsoft changed how it interviews software developers” ↗Refactoring by Martin Fowler is a great one https://www.amazon.com/Refactoring-Improving-Existing-Addiso... Design Patterns is also very well known https://www.amazon.com/Design-Patterns-Elements-Reusable-Obj...
on “Ask HN: How to learn best practices when you have no one to teach you?” ↗