WheresMyMoney allows you to keep track of your spending habits and trends with various supporting tools and functionalities.
Summary of Contributions
Given below are my contributions to the project.
New Feature: Added Storage Capability.
What it does: This feature introduces the ability to load and store program data for a group into local files.
Justification: By storing data in files, users can resume their work and maintain a record of their expenses even after closing the application. This feature enhances the usability and practicality of the application.
Highlights:
Uses the CSV file format for easy processing with other applications. CsvUtils are abstracted out for ease of use.
Saving/ loading is implemented in the related data classes, increasing cohesion and reducing bugs (eg. On future updates to the classes, updating saving is easier)
General Contributions: Abstraction of Ui, Parser, Commands, ArgumentsMap
What it does:
Ui handles the User interface of the application (Input, Output).
Parser handles parsing of commands, ArgumentsMap handles mapping of arguments to their values with appropriate validation.
Command provides a standardized interface for all commands in the system.
Justification:
This abstraction allows for standardisation and consistency in various aspects such as error messages, command format, etc.
It promotes separation of concerns, making it easier to manage and extend different aspects of the application independently.
General Contributions: Abstraction of Exceptions and Logging
What it does: Centralizes exception handling logic, allowing for consistent error reporting and graceful error recovery across the application. Centralizes logging logic for consistent logging across the application.
Justification: Various classes of Exceptions enhances the overall structure and maintainability of the codebase.