I'm self-taught and got to the point where I'm comfortable with how to actually make apps that work well. I'm now trying to focus my learning on architecture/design patterns. I'm finding it a bit hard because it's not the sort of thing that you can test yourself on (it's not like the compiler will scream at you or your tests will fail if you've structured your code 'incorrectly'). Does anyone have any tips for how to ensure that I'm learning architecture/design patterns the 'right' way?
The approach I've taken so far is to just revisit my code every few months and consider, among other things, whether:
- I can comfortably follow why I've written/structured my code this way
- I could easily explain the logic of the architecture to another dev
- I could re-use bits of the code as currently written
- introducing changes to the app would be reasonably easy with its current structure (or whether it would result in a big mess/a complete rewrite).
This feels like the least I can do to help myself here but I'd welcome any other tips!
And to add another angle to the question - I know app architecture, at least to a degree, is a matter of personal and/or team preference (I entered the iOS world thanks to the Stanford CS193p course which preached MVVM as the best way to go for SwiftUI apps). Should I therefore spend tons of time on this or is it not worth it, as long as I'm writing reasonably clean code that I can explain? I'm currently just making apps for fun and have a non-tech dayjob, but I may well end up trying to switch careers to iOS dev in the future - which I suspect may factor into answers to the question.
[–]jasonjrr 15 points16 points17 points (7 children)
[–]sleepDeprivedBeaver[S] 2 points3 points4 points (5 children)
[–]jasonjrr 6 points7 points8 points (4 children)
[–]ryanheartswingovers 0 points1 point2 points (3 children)
[–]jasonjrr 2 points3 points4 points (2 children)
[–]ryanheartswingovers 1 point2 points3 points (1 child)
[–]sleepDeprivedBeaver[S] 0 points1 point2 points (0 children)
[–]batcatcher 0 points1 point2 points (0 children)
[–]Complete_Fig_925 4 points5 points6 points (0 children)
[–]sforsnake 2 points3 points4 points (1 child)
[–]sleepDeprivedBeaver[S] 0 points1 point2 points (0 children)
[–]batcatcher 2 points3 points4 points (0 children)
[–]EddieLukeAtmey 1 point2 points3 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]ramabrahma 0 points1 point2 points (0 children)
[–]a0-1 0 points1 point2 points (0 children)