-
Notifications
You must be signed in to change notification settings - Fork 11
Refactor Description
For this code refactor, the main concerns were usability, maintainability and readability of code. The goal of this refactor was to improve the current codebase without changing the functionality of the code. Discussed below are various tasks done to refactor the code.
Previously, there were areas where a lot of the frontend logic was repeated directly into its associated classes. The main concern of this was repeating code in multiple classes, making them unnecessarily long and difficult to read.
An example of this is the RecipeCard logic. Originally, it was troublesome to add another recipe card in our project as we would have to write the full frontend logic again. Before:
FeatureToday.jsx
After:
RecipeCard.jsx
FeatureToday.jsx
By extracting the RecipeCard logic into it's own component, it becomes reusable and more maintainable. For example, if we have to add new cards or features relating to user interaction, this separate RecipeCard.jsx class can be reused easily as a single, isolated component. This would also reduce error and debugging time as we would only need to focus on one component class rather than the same logic copied many times in many places.
Formerly, many methods and sections in the project were time consuming to understand due to the lack of JavaDocs in the codebase. Without proper documentation, a lot of time would be spent in understanding the code as we were left to derive the explanations ourselves.
We have added JavaDocs in the codebase for better readability and documentation. An example is given below
Before:
No Comments
After:
Adding Comments
By adding meaningful comments in critical areas, the refactor improved the maintainability of the code by providing clear documentation so future development is easier and faster. For example, if we want to reference certain methods for the logic of the code it is quite easy to pinpoint what method we want to call due to the documentation providing clear and concise reasoning and explanation of the component which also, in turn, supports the longevity of the code.