Skip to content

[CS2113T-F12-2] AniChan#54

Open
ChanJianHao wants to merge 1444 commits into
nus-cs2113-AY2021S1:masterfrom
AY2021S1-CS2113T-F12-2:master
Open

[CS2113T-F12-2] AniChan#54
ChanJianHao wants to merge 1444 commits into
nus-cs2113-AY2021S1:masterfrom
AY2021S1-CS2113T-F12-2:master

Conversation

@ChanJianHao

Copy link
Copy Markdown

AniChan is an all-rounded tool to effectively create and organise anime lists with viewing statistics, efficiency-focused features, and tools to improve anime-watching experience.

@BenardoTang BenardoTang left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Very well documented and explained for the most part. However, do take a look at some of the diagrams as they seem overly complicated and some don't load in the website. Good Job!!

Comment thread docs/DeveloperGuide.md Outdated

<br/>

![Main Sequence Diagram](images/Overall-Sequence-Diagram.png) <br/>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

image
The sequence diagram dosen't seem to load in the DG. Seems to happen for other components below...

Comment thread docs/DeveloperGuide.md
<br/>

### 4.1 Estimation Feature

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

2

This portion seems overly confusing to a new user like me... i think a flow diagram/class diagram would greatly help with explaining this implementation.

Comment thread docs/DeveloperGuide.md Outdated

<br/>

![Estimate Command Sequence Diagram](images/EstimateCommand-Sequence-Diagram.png) <br/>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Capture
The diagram is too complicated, do consider splitting the diagram up to smaller portions. It is also difficult to read the words inside the diagram

Comment thread docs/DeveloperGuide.md
<br/>

##### Aspect: When should the program read the script file

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Capture
While i feel the explanations here are well done, It could be too wordy and overly complicated. It should be easier to understand with a general flow diagram to justify your design choices.

Comment thread docs/DeveloperGuide.md Outdated

<br/>

![Watchlist Command Sequence Diagram](images/WatchlistCommand-Sequence-Diagram.png) <br/>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Capture

Should the Sequence diagram be split into different portions? It is difficult to understand what's going on...

Comment thread docs/DeveloperGuide.md
An example scenario would be browsing the 2nd page of a **sorted** list in ascending order.
The only step that would change would be at Step 3, where it will perform sorting of `AnimeData` list.

![Browse Object Diagram 3](images/Browse-Sorted-State.png) <br/>

@BenardoTang BenardoTang Oct 28, 2020

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I like that there is a diagram for almost after every step, well done!

@Bryanbeh1998 Bryanbeh1998 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Overall a very well documented DG! Would look forward to trying out your product. Perhaps you can work on making the sequence diagram less complex. There is a part where it may seem a little too wordy as well. Great job!

Comment thread docs/DeveloperGuide.md Outdated

<br/>

![Estimate Command Sequence Diagram](images/EstimateCommand-Sequence-Diagram.png) <br/>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Diagram is too complex. The words may also be a little too small for people to read.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Perhaps you can consider breaking it down further

Comment thread docs/DeveloperGuide.md Outdated

The user executes `watchlist -d 2` to delete the second watchlist ("NewAnime") in the list.

![Watchlist Command State After Delete Diagram](images/WatchlistCommand-After-Delete.png) <br/>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Words are too small in the sequence diagram. Hard for the user to read and follow

Comment thread docs/DeveloperGuide.md Outdated

<br/>

![Main Sequence Diagram](images/Overall-Sequence-Diagram.png) <br/>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The diagram does not load on the website. Perhaps you can check again

Comment thread docs/DeveloperGuide.md Outdated

<br/>

#### 4.1.2 Design Consideration

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This section although well documented, may seem a little too wordy

@skyaxe97 skyaxe97 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Looks good and detailed! Do look out for when the fonts in the diagrams get a little too tiny. Besides that, good work!

Comment thread docs/DeveloperGuide.md Outdated
Comment on lines +31 to +33
## 1. Introduction
**AniChan** is a command-line application written in **Java 11**. It is written using the Object-Oriented Programming (OOP) paradigm which provides us with means to structure a software program into organized, reusable and reusable pieces of code that makes it good for future improvements and revisions.
<br/>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Should a more detailed introduction of the program be included here to introduce the functionality of the application?

Comment thread docs/DeveloperGuide.md Outdated

<br/>

![Main Sequence Diagram](images/Overall-Sequence-Diagram.png) <br/>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

image

Is there a missing name of method call from XYZParser to Command? And also, would it be better if the line from the activation bar of XYZParser to Command be lower on the activation bar? (It doesn't appear too distinct on the website)

Comment thread docs/DeveloperGuide.md Outdated

<br/>

![Watchlist Command Sequence Diagram](images/WatchlistCommand-Sequence-Diagram.png) <br/>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

image
Maybe consider using reference frames to split the diagram into different portions to make it more readable? It may consequently help to increase the font size of the wordings as it does get a little too small to read.

Comment thread docs/DeveloperGuide.md Outdated
`BrowseCommand#buildBrowseOutput()` will shift its page window down by 1 page as depicted in the diagram below.

![Browse Object Diagram 2](images/Browse-Default-State2.png) <br/>
*Figure 13: Browse Next Page Object Diagram*

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

image
Good use of object diagrams to reflect the states.

@jtankw3

jtankw3 commented Oct 29, 2020

Copy link
Copy Markdown

Hi team F12-2, please rename your PR with CS2113T instead.

@chewyang chewyang left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

DG is well formatted and consistent, looks neat and diagrams are accurate and used when needed. Although some UML diagrams could be cropped and zoomed in to the use, omitting the main and parser classes as it may be a little repetitive. But overall great effort!

Comment thread docs/DeveloperGuide.md

<br/>

### 3.3 Parser Component

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

image
Hi! this is a very clear diagram but should this arrow be a arrow with an empty head instead to show inheritance?

Comment thread docs/DeveloperGuide.md
*Figure 21: Bookmark Entries with more Add*

The following sequence diagram shows how the `Add Bookmark` operation works:

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

image
Great use of colours to show the components, however should this diagram include sequences already introduced earlier? will showing the sequence after the execute() be clearer?

Comment thread docs/DeveloperGuide.md

![Bookmark State After Delete Diagram](images/Bookmark-After-Step6.png) <br/>
*Figure 23: Bookmark Entries After Delete*

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

image

Great use of tables to illustrate the bookmarking implementation!

Comment thread docs/DeveloperGuide.md Outdated
Though the 1st approach could have created a more authentic browsing feature it would not fit the requirements as well as the
2nd approach. The 2nd approach allows for more precise browsing of pages means that more experienced users are able to utilise the
tool quicker and to the same effect as the first approach. As a result, the 2nd approach was chosen as a better fit of the requirements
and in favour of having an application that is highly object-oriented.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Good to see that all aspects for the browsing have been well thought out and considered before making your decision on the implementation to go for. Well documented as well!

@yAOwzers yAOwzers left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Overall good job for the DG! There are some formatting issues like irregular spacings between titles and headings, but other than that 🥇

Comment thread docs/DeveloperGuide.md Outdated
Comment on lines +36 to +37
## 1. Introduction
**AniChan** is a command-line application written in **Java 11**. It is written using the Object-Oriented Programming (OOP) paradigm which provides us with means to structure a software program into organized, reusable and reusable pieces of code that makes it good for future improvements and revisions.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Would it be better if your team included a bit more details of what this application does/functions?

Comment thread docs/DeveloperGuide.md Outdated

<br/>

![Architectural Diagram](images/Architectural-Design.png)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Was the intention of the arrows from the main component to not be connected (touching) the other components? At the current moment, I feel a little unsure of where the main arrows should be pointing at.

Comment thread docs/DeveloperGuide.md Outdated

*Figure 1: Architecture Design Diagram*

> :bulb: The images used are stored in the directory: `images/`. If you wish to update a diagram you may replace the images in this folder.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

It might be good to indicate what the light bulb image means at the beginning of the DG to help the user understand the logos and images used in this document!

Comment thread docs/DeveloperGuide.md Outdated
Comment on lines +307 to +315
| Attribute | Option | Function |
| --- | --- | --- |
| order | 0 | Ascending |
| order | 1 | Descending |
| sortType | 0 | No Sort |
| sortType | 1 | by name |
| sortType | 2 | by rating |
| sortType | 3 | back to original |
| page | \>= 1 | page number |

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I like this concept of using a table as information is presented in a very readable and simple manner. The only question I have is with regards to the heading. Maybe it would be better if you explained to the user what the headings were before introducing them? If not it might lead to further confusion.

Comment thread docs/DeveloperGuide.md
**Step 4:** Now `BrowseCommand` will utilise its `BrowseCommand#buildBrowseOutput()` operation to access all
`Anime objects within the page window, as shown in the diagram below.

![Browse Object Diagram 1](images/Browse-Default-State.png) <br/>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

image

Object diagrams do make it very simple for developers to understand the entire structure of a said component/function. From what I gathered, your team is explaining steps with respect to a given example. Would a sequence diagram be better at facilitating the flow of information since the users can read in a linear flow?

Comment thread docs/DeveloperGuide.md

Here is the sequence diagram to better illustrate the lifecycle of a browse command.

![Browse Sequence Diagram](images/Browse-SequenceDiagram.png) <br/>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

image

Nice sequence diagram to illustrate the entire lifecycle of the browse command! I'm not sure if it's my device but there seems to be some missing arrows for return values? Or is that the intended course of action for the various methods that were called? Also, the activation bar should end at appropriate life cycles, however there are a few activation bars that are left elongated.

Comment thread docs/DeveloperGuide.md Outdated

**Step 2:** The `Parser` class would then extract out `info` from the input given, which will instantiate a new `InfoParser` object, in which `InfoCommand` object is constructed as well.

**Step3:** The `InfoParser#parse()` method will be invoked, and this will validate the parameters given by the user. Once validated, ANIME_ID will be set inside the `InfoCommand` object that was created previously. `InfoCommand` object will be returned back all the way to `Main`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

There might be an overlooked irregular spacing here!

Comment thread docs/DeveloperGuide.md

> :memo: The other options (`-s`, `-l`, `-d`) follows a similar process, only the list and switch option does not interact with `StorageManager` and `Watchlist`.

![Workspace Command Sequence Diagram](images/WorkspaceCommand-Sequence-Diagram.png) <br/>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

image

Just to check, the box seems to be missing the label (eg. alt, opt)

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Hello, may I know which box you're referring to?

Comment thread docs/DeveloperGuide.md Outdated
Comment on lines +640 to +643
| Approach | Pros | Cons |
| --- | --- | --- |
| After each command execution **(current design)**. | User don't have to worry about lost data if their application or system crashes midway. | Application might slow down when the data grows large. |
| When the user exits the program. | Saving is more efficient and could improve performance. | User may lose their data if the application or system crashes midway. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Simple to read and understand! Good job 👍

Comment thread docs/DeveloperGuide.md Outdated
The following sequence diagram shows how the `Add Bookmark` operation works:

![Bookmark Add Command Sequence Diagram](images/Bookmark-Add-Sequence-Diagram.png) <br/>
*Figure 27: Bookmark Add Command Sequence Diagram*

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

image

Good job on the sequence diagram, everything looks to be in-check! Easy to understand 👍

@ChanJianHao ChanJianHao changed the title [CS2113-F12-2] AniChan [CS2113T-F12-2] AniChan Oct 29, 2020
@ChanJianHao

Copy link
Copy Markdown
Author

Hi team F12-2, please rename your PR with CS2113T instead.

Hello, we have renamed the PR. Thank you!

@MuhammadHoze MuhammadHoze left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Overall, good use of the tables and diagrams, maybe you could include them for most if not all of the implementations. Elaboration of each implementation is done clearly as well.

Comment thread docs/DeveloperGuide.md Outdated

<br/>

![Architectural Diagram](images/Architectural-Design.png)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I suggest you could put main in the middle and connect the rest of the relevant boxes to it rather than the floating arrows which may arise confusion.

Comment thread docs/DeveloperGuide.md
* `User`: Manages the workspace(s) and user data.
* `AnimeData`: Provides data from the anime source file.
* `Storage`: Reads data from, and writes data to, the hard disk.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Nicely explained here what each class does.

Comment thread docs/DeveloperGuide.md
**Step 4:** The `ViewWatchlistCommand#execute()` would then be called by `Main`, in which the WATCHLIST_ID will be validated, and if valid, a string containing all the anime name inside the active `Watchlist` will be built and returned to `Main`, where it will be printed out by `Ui`.

**Step 5:** `ViewWatchlistParser`, `ViewWatchlistCommand`, `Parser` and `Command` are terminated

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I suggest maybe having a diagram for certain steps here like for your other implementations for better understanding

Comment thread docs/DeveloperGuide.md

The Bookmark class uses three ArrayList to store bookmark entries of the user, these arraylists maintain information about the anime index, episode and notes. The synchronisation between arraylist is required so that it enables easy retrieval of bookmark information using the bookmark index on the three arraylist.

![Bookmark Class Diagram](images/Bookmark-Class-Diagram.png) <br/>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Well done here! got a better picture on this implementation

Comment thread docs/DeveloperGuide.md Outdated
<br/>

### 3.7 Storage Component
![Storage Class Diagram](images/Storage-Class-Diagram.png) <br/>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Clear view of all the class diagram

Comment thread docs/DeveloperGuide.md Outdated

<br/>

![Architectural Diagram](images/Architectural-Design.png)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

image
Where are the arrows from the main intended to point to? It might be better if the arrows point more specifically.

Comment thread docs/DeveloperGuide.md Outdated
The UI component consists of a `UI` class that handles all user input and system output. The UI is only dependent on the `Main` class and does not interact directly with other classes ensuring high cohesiveness and separation of roles.

The `Ui` component listens for:
* the execution of commands to print the result of the Command.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

image
Perhaps the Command could use the Command markdown instead since it is a major component, and also looks more consistent with the rest of the DG.

Comment thread docs/DeveloperGuide.md Outdated
![UI Class Diagram](images/Ui-Class-Diagram.png) <br/>
*Figure 3: UI Class Diagram*

The UI component consists of a `UI` class that handles all user input and system output. The UI is only dependent on the `Main` class and does not interact directly with other classes ensuring high cohesiveness and separation of roles.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

image
It might be better UI could use the UI markdown as well to maintain the consistency of the markdowns.

Comment thread docs/DeveloperGuide.md Outdated
| --- | --- | --- |
| 1. Leaving the list unsorted | - No complexity and fastest approach | - List will be unsorted and may cause confusion to users |
| 2. Resorting the list again | - The list will be back into its original form before browsing | - May hinder performance as resorting could take time <br/> - Requires altering of the main list |
| 3. Cloning a duplicate animeData object to sort | - The list will be back to its original form <br/> - The main list will not be affected at all | - Expensive operation that will require large storage and time complexity |

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

image
The use of a table is appropriate but it is a little wordy. Perhaps some icons could be used to increase the readability of the table.

ChanJianHao and others added 30 commits November 9, 2020 20:41
…UpDiagram

Merge Update the image to reflect new changes
…or-Fix

Merge ChanJianHao-V21-Javadocs-Minor-Fix
Merge Update UG to change release link to V2.1
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.