Application Architecture Guidance

Hello


After many years of developing applications in .NET and Flex I am at the very begining of a new project which is most suited to being developed for OS X. This enterprise application will combine realtime 3D graphics with business data. Ironic in a way as I have been using Macs daily since my first Apple Classic.


I am a reasonably seasoned developer and place great importance on establishing appropriate architecture and adopting established good practice. Previously I have developed applications following MVC and MVVM patterns and utilised other patterns to keep my code flexible and maintainable.


I am completely new to the world of Xcode, Swift and Cocoa and while this is exciting it is also a little daunting. There is some very good information to be found here at the Apple Developer site and there are several good tutorials and books I have seen but they tend to focus on either the language, Swift, or particular frameworks.


Can anyone please suggest any good books, videos or resources to guide me through the process of developing an application where the logical layers are duscussed, the flow of data between them is described and the different patterns used to establish a robust and maintainable body of code? Unit testing is another area which seems light on information.


Any suggestions would be gratefuly received.


Regards


Chris

Dev Center - Apple's Human Interface Guidelines; Getting Started docs etc.

I don't have specific things to recommend but I do have one warning: be prepared to ignore anything you see in Apple's examples that deals with how to structure a model/controller relationship.


There are examples and code templates that demonstrate state being managed by controllers or the entire data model being stuffed into a class that's also responsible for handling application state changes. There are good code samples and design documents about views and controllers but, given your background, you should probably trust your own experience about model structure.

If you have the time, I'd suggest you watch WWDC videos, going back at least a couple of years. Choose whatever seems relevant (sessions about design, fundamental frameworks) or interesting. The point is not so much that you need the information that the session is about, although that will help, but it's instructive to watch the context in which the code is used. You can get a lot of information about what Apple regards as best practices this way, although you should be aware that this changes over time, so de-emphasize your reliance on older stuff.

Interesting advice, thanks. I will remember your words when looking at examples.

I have started watching them and you're right they do help form a more general view than the specific topic being discussed.


I'm not sure what to make of protocol-oriented programming. Slightly over my head at the moment!

Yes, that session was pretty mind-blowing, but well worth spending time on later. Luckily, it's more about how your code is structured, rather than how your app is structured, so it's something you can grow into if you want.

Application Architecture Guidance
 
 
Q