If you’re like most of my readers, you’re already a successful iOS developer. You’re able to create apps and ship them.
But the older the code gets, the harder it is to maintain. New features aren’t as easy to develop; the code seems to resist change. You’re spending more time fixing bugs than you used to.
Sometimes there’s a call to take existing code and reuse it. This might be in a new target, such as a share extension. Or it might be in a new project altogether. This sounds easy to the product owner, but you find it’s actually quite hard.
Does This Sound Like You? Be Honest:
- Is your codebase becoming easier to manage? Or harder?
- Are there sections of code you’re afraid to touch?
- Are you free to refactor ruthlessly? Or does the code itself resist attempts to “respond to change,” making it hard to be agile?
If you feel your code is becoming brittle and harder to work with, you’re not alone.
I Know How You Feel
I’ve been in those situations. I was on a team responsible for maintaining a touchy framework used by the rest of a Fortune 100 company. Successful changes became harder and slower. Eventually, the entire team was laid off and the framework was replaced.
At each new job, I’ve been confronted by code that was tangled together.
In the midst of chaotic code, I began carving out areas of safety:
- I learned about object-oriented design.
- I started practicing Test Driven Development (TDD) and Refactoring in 2001.
- I’ve been applying TDD to Objective-C since 2005 — first on macOS, then on iOS.
- Now I’m doing TDD in Swift at another Fortune 100 company.
My Goal in Writing This Blog
I’m here to help you create iOS code that is maintainable over the long haul. My goal is to equip you with practical approaches that you can put to work to achieve greater success. If you’ve ever been frustrated by fragile code, or interested in unit testing but afraid it would slow you down — then Quality Coding is especially for you.
I can't thank you enough
Jon, I can't thank you enough for putting together these videos AND some of the frameworks that help facilitate effective testing for Objective-C projects.
I think the biggest impediment to high quality code on a lot of the iOS projects I've been involved with is lack of knowledge around good coding and testing practices, and I find myself referring more and more people here to Quality Coding.
If you’re new to my site (and you likely wouldn’t be on this page if you weren’t), here are some of my most popular posts in each category.
My Most Popular Posts
- How to Do UIViewController TDD
- TDD Networking with DI: Is It Really That Easy?
- TDD Sample App: The Complete Collection …So Far
- 3 Most Important Parts of the Best Unit Test Names
- I’m Pretty Sure Most of Us Are Wrong about XCTestCase tearDown…
- How to Use Dependency Injection to Make Your Code Testable
Architecture & Design
- This Is One Weird Trick for Improving Your Code — Really
- Request Model: How to Architect Web Service Apps
- Value Objects: AppCode’s Code Generation to the Rescue
Project Structure & Language
- 9 Code Smells of the Preprocessor (and Their Fixes)
- How to Easily Switch Your App Delegate for Testing
- 4 Ways Precompiled Headers Cripple Your Code
- Xcode Warnings: Turn Them Up to Eleven
- Built to Support TDD: 7 Cool AppCode Features
- The Swift Unit Testing Template You’re Missing
You can also check my blog’s archive for a list of every post I have written, or use the search field in the sidebar to find other posts that might be of interest.
My Products and Services
A Word about Affiliates
Some of my articles contain affiliate links to products, apps, and services. If you click through and purchase, I will receive a small commission on the sale. Rest assured, I only recommend products or services that I personally use or believe will be helpful to my readers.
Subscribe to My Blog
In order to make sure you don’t miss my newest blog posts, why not subscribe to my blog? It’s fast, easy, and you can unsubscribe at any time. Best of all, I have a special gift when you subscribe. (Click here to learn more.)
Yes, you can tame your code. Let’s do it.
Thanks for a great blog. You've really inspired me down the TDD route!