---
title: Refactoring
description: Refactoring is the process of restructuring existing computer code without changing its external behavior. You will understand how to identify code smells and systematically improve code readability, maintainability, and performance.
category: engineering
subcategory: software-engineering
difficulty: beginner, intermediate, advanced
url: /subject/refactoring
---

# Refactoring

Refactoring is the process of restructuring existing computer code without changing its external behavior. You will understand how to identify code smells and systematically improve code readability, maintainability, and performance.

## Available Resources

2 Books • 1 Courses • 3 Websites

## Websites

### 1. Martin Fowler Refactoring

Martin Fowler's hub for refactoring, defining the practice as disciplined, behavior-preserving restructuring of code and linking to his catalog, book editions and related articles. A short orientation that clarifies what refactoring is, why small steps matter, and where to study further.

**Difficulty:** Beginner | **Price:** Free

**Link:** https://refactoring.com/

**Tags:** refactoring, software-design, code-quality, martin-fowler

### 2. refactoring.guru

Refactoring.guru is a comprehensive learning hub for software engineers focused on design patterns and refactoring, offering clear explanations, code examples in multiple languages, and visual diagrams. It covers the Gang of Four design patterns, refactoring techniques, and practical guidance for writing clean, maintainable code.

**Difficulty:** Intermediate | **Language:** English | **Price:** Free

**Link:** https://refactoring.guru

**Tags:** websites, technology-computer-science, computer-sciences

### 3. sourcemaking.com

SourceMaking is a comprehensive online guide to software design patterns, anti-patterns, and refactoring, featuring a searchable pattern library with detailed explanations, diagrams, and code examples across multiple languages.

**Difficulty:** Intermediate | **Language:** English | **Price:** Free

**Link:** https://sourcemaking.com

**Tags:** websites, technology-computer-science, software-architecture

## Courses

### 1. Clean Code

Master refactoring techniques with Mosh Hamedani's Clean Code course and write maintainable, readable code. Start improving your skills today!

**Difficulty:** Beginner | **Price:** Paid

**Link:** https://www.udemy.com/course/clean-code/

**Tags:** clean-code, refactoring, csharp, code-quality, naming

## Books

### 1. Refactoring: Improving the Design of Existing Code

**Author:** Martin Fowler

Martin Fowler's foundational book defining refactoring and cataloguing dozens of named, step-by-step transformations in Java, alongside a list of code smells. After it, you can spot poorly structured code and improve its design in small, test-protected steps without changing behavior.

**Difficulty:** Intermediate | **Language:** English | **Price:** Paid

**Link:** https://www.amazon.com/dp/0201485672?tag=edmonddante07-20

**Tags:** books, technology-computer-science, software-engineering

### 2. Refactoring to Patterns

**Author:** Joshua Kerievsky

Joshua Kerievsky's book connecting refactoring with Gang of Four design patterns, showing through worked Java examples how to move code toward, or away from, patterns incrementally. It teaches when a pattern is justified and how to introduce one safely instead of overengineering upfront.

**Difficulty:** Intermediate | **Language:** English | **Price:** Paid

**Link:** https://www.amazon.com/dp/0321213351?tag=edmonddante07-20

**Tags:** books, technology-computer-science, software-engineering

---

*This content is part of Dantes.io - Your Treasure Map to Knowledge*

*Curated by humans at Dantes.io. Personal study use welcome; republishing this curation requires permission (team@dantes.io).*

View this page online: https://dantes.io/subject/refactoring