Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CS2113-F13-1] Taste of Mom's #49

Open
wants to merge 463 commits into
base: master
Choose a base branch
from

Conversation

Aung-Phone-Naing
Copy link

Taste of Mom's helps students manage recipes, optimized for use via a Command Line Interface. This ensures that frequent tasks can be done faster by typing in commands.

**Main components of the architecture**

![image](./PlantUML/MainArchitecture.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Architecture diagram is clear and simple to understand.

The **API** of this component is specified in [`Parser.java`](https://github.com/AY2223S2-CS2113-F13-1/tp/blob/master/src/main/java/seedu/duke/parser/Parser.java)

![image](./PlantUML/ParserComponent.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove the C and I symbols beside the Class and Interface boxes as it is not the module convention. Replace the private and public access modifiers with - and + symbols instead.

The **API** for this component is specified in [`RecipeList.java`](https://github.com/AY2223S2-CS2113-F13-1/tp/blob/master/src/main/java/seedu/duke/recipe/RecipeList.java)

![RecipeList Component](./PlantUML/RecipeListComponent.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove the C symbols beside the Class boxes as it is not the module convention. Replace the private and public access modifiers with - and + symbols instead.


> The following sequence diagram shows how the help feature works:
![Sequence Diagram for Help](./PlantUML/Help.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The class boxes at the bottom of your diagrams should be removed.

Copy link

@Jeraldchen Jeraldchen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall, DG is clear and well done. There are some common syntax errors in the sequence diagrams that do not adhere to module standards as mentioned in the other comments.

Copy link

@Brennanzuz Brennanzuz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall many many examples and code snippets to extensively show what the user can input, what is expected, and the reason for the implementation as a bonus. Ample number of diagrams to really illustrate the flow, even with a huge diagram to tie everything together. Besides understandably not adhering to the format for the class diagrams, the developer guide is very comprehensive and helpful.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like how an example of just one command is given (delete 1) as it helps to understand the general flow of the program while keeping the diagram simple and readable. This is provided that delete 1 is the most exhaustive example that shows the most classes involved.

@@ -0,0 +1,26 @@
@startuml

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A common problem among all groups including mine is to have the little icons. You can add:

hide circle
skinparam classAttributeIconSize 0

to remove them and follow the recommended format.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quotation marks around functions can be removed. I also like the mindful deletion of only the :Command object as the other classes will continue to be used in other functions, while the :Command object will no longer be used.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can the multiplicity of Step be specified? If it can, then it would be good to indicate.

Copy link

@KedrianLoh KedrianLoh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well done overall!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The dotted line (delete 1) between UI and Duke seems a little ambiguous.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since the HELP message shown does not require any further user input, consider changing it to a dotted line. The UI can be shifted to the rightmost portion of the sequence diagram since it is only used after Command.

Modify UG to match actual output
}
CommandType type;
switch (lineSpaced[0]) {
case "list":
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the switch-case, do change the magic strings in the case to constant variables, like you have done so in your Command.java.

parsed.add(parsedTagStep[0].trim());
try {
parsed.add(parsedTagStep[1].trim());
}catch (Exception e){
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure how the checker did not pick up on this, but there a code-style violation here. Do check your code thoroughly for these issues :)

Comment on lines 84 to 85


Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do keep the spacing between methods consistent as well! Some have 1 or 2 lines, some have no lines at all.

* @throws IncompleteInputException if full description input is missing the description or due date or both.
*/
public static ArrayList<String> parseRecipe(String description) throws IncompleteInputException {
ArrayList<String> parsed = new ArrayList<>();
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You could follow more conventional naming for this variable. To my understanding these are your parsed command parameters, perhaps something a little more descriptive? :)

public void showInvalidStepMessage() {
System.out.println(StringLib.INVALID_STEP);
}
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good job minimising the use of magic strings here! But do consider changing as many magic strings to constants as possible!

public ArrayList<Step> getList() {
return stepList;
}

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well done with the method naming conventions!

private static boolean matchString(String input, String regex) {
String matcher = input;
int count = 0;
while (matcher.contains(regex)){
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are violations with regards to spacing here as well, do keep a look out for these!

liuziyang020319 and others added 30 commits April 10, 2023 15:39
grammar check for recipelist
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants