Ryan Ong's Project Portfolio Page
Project: For Your Interest
ForYourInterest - ForYourInterest is a desktop app for managing members in university clubs/societies, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).
Given below are my contributions to the project.
- Improved Feature: Modified and improved the
addcommand.- Improvement: Allows the user to omit certain details about the added person and only need to provide the name (minimally). Also changed the address detail of the person to telegram handle.
- Justification: This feature significantly improve the practical usability of the application since sometimes the user does not have all the details about a member. This improvement allows the to add a member with unspecified details, then update the details at a later time (using the
editcommand). Address was changed to telegram handle to better suit the needs of our target user who will have a greater use for a member’s telegram handle, than for their home address. - Highlights: In addition to changing the feature itself, the implementation of this feature required changes to the storage component. Although it was not the main component I was in charge of, I was able to quickly pick up and understand how it worked to make the necessary changes. I also needed to modify existing test cases to ensure that they were applicable to the features.
- New Feature: Added event modification features (
renameEventcommand andremovePersonFromEventcommand).- What it does: Allows the user to modify an existing event by changing its name and removing people form the event.
- Justification: This is a necessary supporting feature for the event feature. Without it, users would have to manually delete the entire event and recreate it from scratch by adding in the correct member, risking data loss due to human error.
-
Code contributed: RepoSense link
- Project management:
- Held Zoom meetings for the team’s weekly meetings.
- Enhancements to existing features:
- Wrote additional tests for new and existing features (Commits AddCommandParserTest, JsonAdaptedPersonTest)
- Documentation:
- User Guide:
- Added documentation for the features
add,details,renameEvent, andremovePersonFromEvent#20 #87 #138 - Added screenshots and videos for app demos: Project Management Document
- Added documentation for the features
- Developer Guide:
- Added implementation details of the
addDeveloperGuide - Modified the class diagram for the
Personclass ModelClassDiagram
- Added implementation details of the
- User Guide:
- Community:
- Extract from UG:
Addcommand in UG:
Adding a person :
addAdds a person to the Interest Group.
Format:
add n/NAME [p/PHONE_NUMBER] [t/TELEGRAM_HANDLE] [e/EMAIL] [tag/TAG]
- Only person’s name must be entered to add the person. All other details are optional.
Personadded should not have the same name (case-sensitive) asPersonthat is already in the application.Examples:
add n/Smith p/91234567 t/smith18 tag/TeamCaptain tag/TeamAadd n/Xiao Ming p/61234567 t/@xiao_ming e/xiaoming@gmail.comadd n/John Doe
- Extract from DG:
Addimplemetation in DG:
Add feature (modification of existing feature)
Implementation Details
The
addfeature is implemented as a command such that it follows the flow of theLogiccomponent as outlined above. The feature was modified to allow the user to omit non-essential details when adding a person (Phone, Telegram, Email, Tag(s)). These changes are reflected in the updated Model Class Diagram. This was done by taking the approach of using a unique unspecified input for omitted details. Through such an approach, the modification to existing code was minimised.Design Considerations
Aspect: Ensuring that validation regex still valid.
- Alternative 1 (current choice): Bypass the validation regex check since unspecified input does not require to be checked.
- Pros: Does not require unnecessary modification of the validation regex.
- Cons: Requires an additional check for whether it is an unspecified input. This con was mitigated by extracting out the check to ensure code is SLAP and in a single level of abstraction.
- Alternative 2: Modify validation regex to match unspecified input string.
- Pros: Does not require the additional lines of code, may be seen as a “cleaner” implementation.
- Cons: Validation regex would become much more complex and unreadable. Also makes the code less extensible for other developers who may want to change the unspecified input string.