iOS Refactoring & Design

Widely misunderstood by developers, “refactoring” isn’t rewriting. Disciplined refactoring is changing the design of your code in small, verified steps. In this way, design can be discovered. Listen to the code, it’ll guide you.

What is refactoring? It’s hard to visualize only from abstract descriptions. At Quality Coding, you’ll see how refactoring works in the context of real examples from iOS code.


Refactoring is the art of moving in small, verified steps. But what does it look like for iOS developers? I’ll show you…

Code Smells

A “code smell” is when the code, well, smells funny. It may be okay, but it can be an indicator that something’s wrong with the design. Developing a good sense of “smell” is crucial to achieving good code design.

Code Design

iOS developers usually think about “design” in terms of user experience, or visual design. But code also has design—or lack of design. It’s basically user experience, where the user is the developer and their teammates.

Looking for in-depth examples of iOS refactoring?

Part III of my book iOS Unit Testing by Example: XCTest Tips and Techniques Using Swift focuses on refactoring a view controller:

  • Cleaning up messy code
  • Transforming to Model View View Model (MVVM)
  • Transforming to Model View Presenter (MVP)

The earlier parts covers foundational tools and skills of iOS unit testing, and how to test specific behaviors of iOS apps.

Other Refactoring and Design Articles

Here are other articles that aren’t listed in the groups above yet:

Jon Reid

Refactoring: I’ll say more

Hi, I’m Jon Reid, the founder of this website and the consultancy Quality Coding, Inc. I’ll say more here about my philosophy of refactoring and design, stay tuned.

Join Us & Never Miss an Article!

Want to make sure you get notified when I release my next article or video? Then sign up here to join my list of Quality Coding Insiders. You’ll receive email notifications whenever I release new content. Plus, you’ll get access to the test-oriented code snippets I use every day!