The last couple days I’ve been reflecting on the structure of my app. I did write code, but it was more academic and toy-like than anything practical. I went through some of the objc.io books and the rest of the iOS Foundations course and made a few notes.
I did a lot of things right with Moodsmitten. I used a strict MVC structure, and tried to avoid using singletons wherever possible. However, there were times that I did get crazy with singletons (settings, in particular), and places where I could have hidden data layer API calls. For example, I pass a CoreDataStack object to each ViewController that adheres to my main info-passing protocol. I should have hidden data fetching in a particular class.
Embarrassingly, I am guilty of one epic 700-line View Controller for the Day View. I’m not sure how it happened, but it’s here and will most likely stick around for a while. It will be tough to refactor, and not particularly enticing because it won’t provide any benefit to customers.
At this point, these architectural changes would require too much of a rework. This is definitely a version 2.0 issue and things I can do in future apps.