Implementation:
Refactoring:
Code Quality:
IDEs:
Project Management:
Other:
This is a compulsory LO. If you miss this LO, your participation marks will be affected. However, you can make up for missing this LO by doing double work for the following LO (in Week 5):
๐ฏ Evidence:
๐ก Those who failed to produce working code at 1KLoC milestone (in week 3) can recover the lost marks by doing two enhancements at this milestone.
๐ก When working with existing code, a safe approach is to change the code in very small steps, each resulting in a verifiable change without breaking the app. For example, when adding a new sort
command, the
first few steps can be,
- Teach the app to accept a
sort
command but ignore it. - Next, teach the app to direct the
sort
command to an existing command e.g.sort
command simply invokes thelist
command internally. - Add a
SortCommand
class but make it simply a copy of the the existingListCommand
. Direct thesort
command to the newSortCommand
. - ...
๐ก Note that you can reuse the code you write here in your final project, if applicable.
Individual component:
You can omit this individual component if you have worked with a code base that meets the following criteria:
- more than 2KLoC of the code base was written by other developers
- your code included automated tests
- your code was contributed via a proper revision control workflow e.g. pull requests
Requirements: Do an enhancement to [AddressBook - Level2] e.g. add a new command. It can be the same enhancement you did to AddressBook Level1 (at the 1KLoC milestone in week 3). The size of the enhancement does not matter but you must,
- update the User Guide
- update existing tests and add new tests if necessary, for both JUnit tests and I/O tests
- follow the coding standard
- follow the OOP style
Optional but encouraged:
- Update the Developer Guide
Submission: Create a PR against Addressbook-Level2. Only clean PRs (i.e. free of unrelated code modifications) will be accepted.
Team component:
The team component is to be done by all members, including those who were allowed to omit the individual component.
-
Review PRs created by team members in the Individual Component above i.e. add review comments in the PR created against module repo. You can either give suggestions to improve, or ask questions to understand, the code written by the team member.
-
Requirements: Try to ensure that each PR reviewed by at least one team member and each team member's PR is reviewed by at least one other team member.
-
Submission: Just update PR created in the individual component by adding comments/commits to it.
Acceptable: Evidence that you have worked with a code base larger than 1KLoC. e.g. a project in a previous module or a pet project
Suggested: Do an enhancement to [AddressBook - Level1] e.g. add a new command
-
The size of the enhancement does not matter.
-
Change the code in small steps and commit after each significant change.
-
Remember to update all relevant documentation and tests.
-
Try to follow the coding standard in your new code.
-
Try to stay within the procedural (not OOP) style of the code base.
-
[Optional] Fork address AddressBook - Level1 to your GitHub account and push your changes to your fork.
Note that you can reuse the code you write here in your final project, if applicable.
Submission: demo during tutorial.