Week 18: 4th Dec - 8th Dec

Spent half the week in Rome, and Friday was spent at company Christmas lunch.


Week 19: 11th Dec - 15th Dec

Placement

Monday

Began writing configuration file implementation, managed to get good amount of progress done. Went with the Soc/SRP approach and wrapped config interaction in a simple object which would help reduce redundancy and make train wreck lines of code actually readable.

Tuesday

As it turns out, my approach doesn’t conform to the standard usage of ConfigurationManager, and without that point, I received no points which I thought to be valid enough. Regardless, I will be changing the implementation as suggested by others to get the task over and done with.

Note from future self: little did I know, was that what I was trying to do was already done by ConfigurationManager itself, and it was a different pattern that I was using incorrectly which triggered the weird feeling I had…

Wednesday

  • Added few new tasks to the projects’ phabricator board to ensure that I finish all the necessary things
  • Stronger exception handling when dealing with configs
  • Finally managed to remove one of the hardcoded values which has been around for a while (took a while to figure out a good way of dealing with the issue)
  • Int32.MaxValue fiasco

Thursday

Fixed the Int32.MaxValue issue and updated unit tests

Friday

Spent good portion of the day going over the correctness of the system to ensure that the final output into the database is well, correct. Managed to find number of relatively minor issues which shouldn’t take too long to fix.


Week 20: 18th Dec - 22nd Dec

Placement

Monday (Design review day 2.0)

Spent morning preparing for the design review. I started the review of by deciding to get Ian up to date with what; me, Lee and Jake covered during the first review. However doing this took the whole afternoon and nothing new was covered…

However (un)surprisingly Ian being system architect/senior developer pointed out number of architectural flaws in my system, and going over everything again I too, realised the ‘architecture’ that I have currently is heavily flawed; number of checks are either pointless or done at wrong times, method namings were off and the fact that I haven’t completely picked up DI/IoC patterns became apparent.

Tuesday

After the daily, morning code review and stand-up I got right to implementing modifications based on the feedback I received on Monday.

The first thing I got doing was trimming the fat and getting rid of unnecessary things like pointless checks. Also began (re)implementing highest level logic and carried on with modifying some underlying logic to fit new (actual) needs (i.e., db reads), and removed a ton of old, useless code.

Wednesday

  • Removed over the top checks related to certain objects
  • Removed obsolete code from currently used high-level-logic-manager class
  • Created a task to keep track of all the changes I am making and be able to track it all back
  • Modified how operations work to fit around the improved approach
  • Ran into some problems with concurrent database connections with the container being used to control object instances. Managed to found a very verbose, but effective workaround to solve the concurrency issues.

Thursday

  • Deleted obsolete TaskManager implementation, going forward with the new improved implementation
  • Added individual interfaces for different operations, so it’s easier to differentiate during object injection
  • Removed obsolete checks and utterly useless class (it instantiated one object and returned the return value of one of the methods!)
  • Moved config values to simply be injected into the objects opposed to retrieving the values from inside the object

Friday

Working from home day before breaking up for Christmas/New Year holiday. As we were finishing early today and I had few doctor’s appointments to attend I didn’t manage to get everything I wanted to do, done. However, I still managed to;

  • Clean up all of the verification classes to be on board with the new (correct) DI/IoC implementation. Objects are much cleaner and simpler now!
  • One patter-like modification which I have been doing, now I moving away from: boolean return value plus string message containing the status of how piece of logic executed, to: using void return type and if there’s an issue, simply throw an exception!
  • Moved value verification closer to value retrieval
  • Refactored one of the fundamental classes underlying the system logic