I might inherit a somewhat complex multithreaded application, which currently has several files with 2+k loc, lots of global variables accessed from everywhere and other practices that I would consider quite smelly.
Before I start adding new features with the current patterns, I'd like to try and see if I can make the basic architecture of the application better. Here's a short description :
- App has in memory lists of data, listA, listB
- App has local copy of the data (for offline functionality) dataFileA, dataFileB
- App has threads tA1, tB1 which update dirty data from client to server
- Threads tA2, tB2 update dirty data from server to client
- Threads tA3, tB3 update dirty data from in memory lists to local files
I'm kinda trouble on what different patterns, strategies, programming practices etc I should look into in order to have the knowledge to make the best decisions on this.
Here's some goals I've invented for myself:
- Keep the app as stable as possible
- Make it easy for Generic Intern to add new features (big no-no to 50 lines of boilerplate code in each new EditRecordX.cs )
- Reduce complexity
Thanks for any keywords or other tips which could help me on this project.