-
Notifications
You must be signed in to change notification settings - Fork 89
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-T18-2] FinancialPlanner #17
base: master
Are you sure you want to change the base?
Changes from 250 commits
b5ba1de
e7355e4
bedd062
9442c88
7edf450
4257110
0aa5efa
8ef4691
425cf72
1642706
6ac95c6
59beb3d
f2077fc
53cc8ca
be61c28
8e6bc95
35f10a3
660f302
c9b08fc
3813917
5d2940d
d90ccc5
2ecb578
3f80f21
27418e4
410558c
d9293b5
01e764d
a026d6c
0544e3f
62ab3bf
ac5f45a
3eab7c3
c8298c3
810c718
4392054
3590c87
2447cba
47187ce
e249eca
3f4327a
d95af1b
ad69fe0
2815bb5
03c556b
9abcc2f
c27e5dd
26bbcd4
fd935ef
b75a589
6611146
51480db
ed086fe
e0869ff
1c50478
0a1278b
9430c21
8ea9b49
2902393
f008034
1f63e8d
466e04d
8b56635
4270383
6edb7ea
0146afb
d7e4477
c1af3ef
52300e6
1bafe66
98daeac
11d1174
8d7db09
f9593b3
6073833
e6cc5c4
a8d8d26
058defc
07b02e6
265b96c
4927653
12a0724
5865c8e
f988a32
51f8f51
5a5dc49
13f5f72
03c0c58
a93e83d
7694949
f07b5b0
24f5843
3a11b37
08d0112
9a4f943
bd8a8bf
2df3f93
d9bd60d
72a16ae
3a0fb32
f52f1e1
52da987
e2ebbe9
c3c411b
932b6e9
700392d
578564c
878d782
727ab4b
fba7732
2f2a764
8660d42
e3d3d00
1cbae2b
e901e67
dc31f33
cae5827
a11d406
abf2f8c
c3ed577
2bf3be5
c936fb5
49df5b0
5d6c505
d579e32
0543ea4
56a6742
2a25f48
c9cc538
3684545
b68d1c2
ce4b754
8f06d05
cac53ac
320aa07
0efce8f
cd6c82e
6f23dec
e0b2656
45e97d6
1059aa1
69016f4
346f3c7
e0801c3
593c2db
aba804b
3c5ddee
4b8495e
19fbd5c
3eda51d
21ac550
eb6d563
3c77204
97d75b5
1324840
fab38b1
07636fc
a207e78
8bde6d4
4f29a53
b83a06c
31126ff
3a03ae7
51cedca
2bdb914
63c26c2
997c841
f836550
5a83f4f
accfb52
76fe341
2ca87af
9192e6c
83db9ed
2a407e4
26ea23a
38075f2
95babe9
2afa997
7b714b0
efabe5a
94e1308
4b44100
fadf088
3612cc8
614e9c9
36e7556
e19808b
86e7b72
579a5e1
ff1bffa
63f5765
1bdd7d3
d8b6e07
f82fcc7
7a20e0f
3737520
2e591a2
d6dc02d
e7c0591
70b7704
587ce36
941be64
6721762
85c469f
fad742f
0d03642
889370d
55ae6a6
c417ab5
65663a8
c1e591c
558f765
7cc98dc
57b5961
ff4a734
829d36a
7b3be7b
ea272b6
730afd0
8cc3fec
9bd2f73
d4d6562
875b0ab
1f3e3e5
1852642
fbeda55
9b7a4b7
a7bbd83
6f57dc6
1e59dff
4a5e4e4
6bff288
2a15144
3a324b7
99b8c54
1c915c4
e4f7d1e
0b7dbb5
9c15ad8
bdb553a
30ef4ff
c4a964a
2de04b7
80da84b
e97054c
be44706
708646a
878b5ac
3b2bd80
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -15,3 +15,4 @@ bin/ | |
|
||
/text-ui-test/ACTUAL.TXT | ||
text-ui-test/EXPECTED-UNIX.TXT | ||
data/ |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,10 @@ | ||
# About us | ||
|
||
Display | Name | Github Profile | Portfolio | ||
--------|:----:|:--------------:|:---------: | ||
![](https://via.placeholder.com/100.png?text=Photo) | John Doe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
![](https://via.placeholder.com/100.png?text=Photo) | Don Joe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
![](https://via.placeholder.com/100.png?text=Photo) | Ron John | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
![](https://via.placeholder.com/100.png?text=Photo) | John Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
![](https://via.placeholder.com/100.png?text=Photo) | Don Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
Display | Name | Github Profile | Portfolio | ||
--------|:-----------:|:--------------:|:---------: | ||
![](https://via.placeholder.com/100.png?text=Photo) | John Doe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
![](https://via.placeholder.com/100.png?text=Photo) | Don Joe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
![](https://via.placeholder.com/100.png?text=Photo) | Ryan Chua | [Github](https://github.com/ryan1604) | [Portfolio](docs/team/ryanchua.md) | ||
![](https://via.placeholder.com/100.png?text=Photo) | Neo Min Wei | [Github](https://github.com/NeoMinWei) | [Portfolio](docs/team/NeoMinWei.md) | ||
![](https://via.placeholder.com/100.png?text=Photo) | Frederick | [Github](https://github.com/) | [Portfolio](docs/team/frederick.md) | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,304 @@ | ||
# Developer Guide | ||
|
||
## Table of contents | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good use of indentation to organize the Table of Contents. |
||
|
||
* [Acknowledgements](#acknowledgements) | ||
* [Design & implementation](#design--implementation) | ||
* [Storage Component](#storage-component) | ||
* [Design considerations](#design-considerations) | ||
* [Visualization Feature](#visualization-feature-) | ||
* [Class diagram](#class-diagram) | ||
* [Sequence diagram](#sequence-diagram-) | ||
* [Add Income/Expense Feature](#add-incomeexpense-feature) | ||
* [Class Diagram](#add-incomeexpense-class-diagram) | ||
* [Sequence Diagram](#add-incomeexpense-sequence-diagram) | ||
* [Recurring Cashflow Feature](#recurring-cashflow-feature) | ||
* [Class Diagram](#recurring-cashflow-class-diagram) | ||
* [Sequence Diagrams](#recurring-cashflow-sequence-diagrams) | ||
* [Budget Feature](#budget-feature) | ||
* [Set and update budget](#set-and-update-budget) | ||
* [Delete budget](#delete-budget) | ||
* [Reset budget](#reset-budget) | ||
* [View budget](#view-budget) | ||
* [Product Scope](#product-scope) | ||
* [Target user profile](#target-user-profile) | ||
* [Value proposition](#value-proposition) | ||
* [User Stories](#user-stories) | ||
* [Non-Functional Requirements](#non-functional-requirements) | ||
* [Glossary](#glossary) | ||
* [Instructions for manual testing](#instructions-for-manual-testing) | ||
|
||
## Acknowledgements | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Comprehensive acknowledgement of others. |
||
|
||
**Xchart (A Simple Charting Library for Java)** | ||
- author: KNOWN | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe there is a typo here: shouldn't it be There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. THanks for spotting! |
||
- source: [https://knowm.org/open-source/xchart/](https://knowm.org/open-source/xchart/) | ||
|
||
**JSON Simple (simple Java toolkit for encoding and decoding JSON)** | ||
- author: Yidong Fang (Google Code) | ||
- source: [https://code.google.com/archive/p/json-simple/](https://code.google.com/archive/p/json-simple/) | ||
|
||
**Apache Common Langs 3** | ||
- author: Apache Commons | ||
- source: [https://commons.apache.org/proper/commons-lang/](https://commons.apache.org/proper/commons-lang/) | ||
|
||
**Alpha Vantage Stock Market API** | ||
- author: Alpha Vantage | ||
- source: [https://www.alphavantage.co/](https://www.alphavantage.co/) | ||
|
||
**Gson Java library** | ||
- author: Google | ||
- source: [https://github.com/google/gson](https://github.com/google/gson) | ||
|
||
**Financial Modeling Prep Stock API** | ||
- author: Financial Modeling Prep | ||
- source: https://site.financialmodelingprep.com/ | ||
|
||
**round() method in Cashflow.java** | ||
- author: mhadidg | ||
- source: [https://stackoverflow.com/questions/2808535/round-a-double-to-2-decimal-places]() | ||
|
||
**capitalize() method in Cashflow.java** | ||
- author: Nick Bolton | ||
- source: [https://stackoverflow.com/questions/1892765/how-to-capitalize-the-first-character-of-each-word-in-a-string]() | ||
|
||
**DG adapted from** | ||
|
||
* [Addressbook-level3](https://github.com/se-edu/addressbook-level3) | ||
|
||
{list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well} | ||
|
||
## Design & implementation | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Perhaps it would be good to have a Architecture Diagram showcasing your overall design and mechanism of FinancialPlanner. This would give the Developer their needed context should they want to further implement other features to integrate into your program |
||
|
||
{Describe the design and implementation of the product. Use UML diagrams and short code snippets where applicable.} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe you could add a brief introduction and overview of your Financial Planner, explaining the goal and purpose as well as its rough overall design in form of an arbitrary architecture diagram. This would also allow further developers an immediate insight into your product and align them with your ideas and implementations from the start. |
||
|
||
### Storage Component | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The relationship between Storage and SaveData/LoadData seems slightly confusing. A clearer distinction or some elaboration on what differentiates Cashflow and Budget would be beneficial. |
||
|
||
API: `Storage.java` | ||
|
||
![](images/Storage.png) | ||
|
||
* The storage component loads data from the saved text files when the application starts, and saves the data to the | ||
text files when the application exits. | ||
* The storage class uses the static methods in LoadData and SaveData to load and save data respectively. | ||
* The `load` method in LoadData reads the `data.txt` file and loads any existing Income, Expense and Budget into the application. | ||
* The `save` method in SaveData saves all Incomes, Expenses and existing Budget into the `data.txt` file. | ||
|
||
#### Design considerations: | ||
|
||
* There are 2 main ways to implement the storage, one is to save the data after every command, and the other is to save | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Great job explaining the pros and cons of the design consideration. Perhaps you could consider explaining to the reader why you chose to implement it this way over the other instead of just stating what you chose. |
||
the data one upon exiting the program with the `exit` command. | ||
* Saving the data once upon exit (Currently implemented): | ||
* Advantage: Better efficiency and performance of the program. | ||
* Disadvantage: If the program crashes or exits incorrectly, data will not be saved. | ||
* Saving the data after every command: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Perhaps it should be specified whether this way is currently implemented or not (as is done for the other option) to keep the considerations coherent. Right now I assume it is not, but I would still not be sure. |
||
* Advantage: Changes are saved after every command. | ||
* Disadvantage: Executing command might slow down the program when there is a large amount of data to be saved. | ||
|
||
### Visualization Feature | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Kudos for integrating Xchart! |
||
|
||
This feature is implemented with the help of [XChart](https://knowm.org/open-source/xchart/), a simple charting library for Java by Knowm. | ||
|
||
By typing in the vis command with the appropriate arguments (`/s` and `/t`), users will be able to visualize their | ||
income or expense using visualization tools (Piechart, Bar Chart or Radar Chart) | ||
|
||
Demo: | ||
|
||
`vis /t expense /c pie` | ||
|
||
Output | ||
|
||
`Displaying piechart for expense` | ||
A message will be shown telling you that the chart is being displayed | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Really nice implementation. This feature is straightforward and meets the user requirements. |
||
|
||
![](images/vis/visOutput.png) | ||
|
||
This feature was implemented with the help of three different classes. | ||
They are namely: Visualizer, Categorizer, VisCommand (Inherits from abstract Command Class) | ||
|
||
VisCommand's Role: | ||
1) Read the parameters of the vis command entered by the user | ||
- `/t` Reads the type of cashflow that the user wants to visualize (income/expense) | ||
- `/c` Reads the type of visualization tools the user wants (piechart/barchart) | ||
|
||
2) Calls the Cateorgizer to sort cashflow (Income/Expense) according to type | ||
|
||
3) Calls the Visualizer to display the chart to the user | ||
|
||
Categorizer's Role: | ||
|
||
According to the cashflow type (Income/Expense) arugment passed in, the Categorizer sorts the | ||
specified cashflow entry according to type using a Hashmap which is returned and used by the Visualizer | ||
|
||
Visualizer's Role: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nice use charts for user to visualize their income/expenses. |
||
|
||
According to the chart type (Pie/Bar/Radar) argument and the Hashmap obtained from the categorizer passed in, | ||
the visualizer displays the specified visualization chart by calling the charting library Xchart. | ||
|
||
### Class Diagram | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Visualizer seems to have methods that return some kind of chart, but the return types are not indicated. The relationship between Categorizer and other classes is not immediately evident. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. VIsualizer would do the showing of chart itself. Thus it is a void method call to visualizer to print the chart. Thanks for the feedback on the class diagram! |
||
|
||
![](images/vis/visualisationClass.png) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In the text above Command and RawCommand are omitted, whereas it seems like there should be a dependency between the Categorizer and VisCommand. Maybe some more detailed steps could help clarify these doubts. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thanks for your feedback, will add it in! |
||
|
||
### Sequence Diagram | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In the sequence diagram, it would be beneficial to include return arrows, especially for method calls that yield some kind of result. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thanks for the feedback! I can see the confusion. printDisplayChart prints a message telling the user that a chart is being displayed. Visualizer has a method for displaying the actual chart. I have renamed the method for UI to make it clearer. I will add the return arrows as well! |
||
|
||
Overall | ||
|
||
![](images/vis/visualisationSequence.png) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should there be a <<class>> above Categorizer and Visualizer? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe you could include return arrows. Also it could perhaps be helpful to make the alt and opt boxes coherent by applying the coloring to all sequence diagrams in the DG (helps create impression that DG was written by a single person). |
||
|
||
Categorizer | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Great use of ref frames to show the overall sequence diagram. Could maybe add return arrows to make the diagram slightly clearer. |
||
|
||
![](images/vis/categorizerSequence.png) | ||
|
||
Visualizer | ||
|
||
![](images/vis/visualizerSequence.png) | ||
|
||
### Add Income/Expense Feature | ||
|
||
The add income/expense command has 2 compulsory arguments `/t` and `/a` and 1 optional argument `/r`. | ||
|
||
Example: | ||
``` | ||
add income /a 100 /t salary /r 30 | ||
``` | ||
Below are the steps that shows the implementation of add income/expense. | ||
|
||
#### Step 1 | ||
The AddCashflowCommand instance calls addIncome() or addExpense(), depending on what `category` is initialised as. | ||
|
||
addIncome() or addExpense() instantiates an Income or Expense object respectively. | ||
|
||
Example: | ||
``` | ||
switch (category) { | ||
case INCOME: | ||
cashflowList.addIncome(amount, incomeType, recur); | ||
break; | ||
case EXPENSE: | ||
cashflowList.addExpense(amount, expenseType, recur); | ||
break; | ||
default: | ||
ui.showMessage("Unidentified entry."); | ||
break; | ||
} | ||
``` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Showing this using a diagram would be better, instead of showing this segment of your code. |
||
#### Step 2 | ||
The instantiated income/expense then updates the overall balance through addIncomeValue() or addExpenseValue(). | ||
|
||
The income/expense object is also added to the list in Cashflowlist which contains all incomes/expenses. | ||
#### Step 3 | ||
The added income/expense is then displayed to the user through the Ui. | ||
|
||
#### Add Income/Expense Class Diagram | ||
Given below is the class diagram showing the class structure of the add income/expense mechanism: | ||
![](images/cashflow/CashflowClassDiagram.png) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good job adding class diagrams! |
||
#### Add Income/Expense Sequence Diagram | ||
Given below is the sequence diagram showing the add income/expense mechanism: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Very clear sequence diagram that has good amount of white space to make it readable. Gives a good picture of how the add income/expense works and when each of them are called |
||
![](images/cashflow/AddCashflowSequence.png) | ||
### Recurring Cashflow Feature | ||
Cashflow refers to an income or expense. | ||
|
||
This feature is called from the user through the `/r` argument in add income/expense command. | ||
|
||
If a cashflow is set to be recurring, the program would add another entry of the same cashflow to the Financial Planner after a set period of time. | ||
|
||
Below are the steps that shows the implementation of the recurring cashflow feature. | ||
|
||
#### Step 1 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think it would be good to add a summary of each step |
||
Once the cashflow is set to be recurring, its corresponding `Cashflow` object would store the date at which the cashflow was added to the Financial Planner. | ||
|
||
The `recur` variable in the object would also be instantiated according to the user's input. | ||
|
||
An additional `boolean` variable, `hasRecurred` is stored in the object and is set to `false` by default. | ||
|
||
Example: | ||
``` | ||
public abstract class Cashflow { | ||
protected int recur; | ||
protected LocalDate date; | ||
protected boolean hasRecurred; | ||
} | ||
``` | ||
#### Step 2 | ||
When the Financial Planner is started again in the future, the date of startup would be obtained from the system. | ||
|
||
After loading existing saved cashflows from data.txt, the program will check for cashflows that are set to be recurring and has not recurred. | ||
|
||
Example: | ||
``` | ||
if (recur > 0 && !hasRecurred) { | ||
... | ||
} | ||
``` | ||
|
||
#### Step 3 | ||
Once a cashflow matches the above criteria, the date of its next addition to the Financial Planner, `dateOfAddition`, would be determined. | ||
|
||
`dateOfAddition` would be compared to the current date, and if the current date is after or equal to `dateOfAddition`, an identical cashflow would be instantiated. | ||
|
||
This identical cashflow would then have its `date` variable set to `dateOfAddition`, then this cashflow would be added to a temporary list, `tempCashflowList`. | ||
|
||
The original cashflow would then have its `hasRecurred` variable be set to `true`. | ||
|
||
#### Step 4 | ||
Each cashflow in `tempCashflowList` goes through **Step 3** again, so that multiple cashflows can be added if it has recurred more than once. | ||
|
||
Once the process is done, all cashflows in `tempCashflowList` are then added to the Financial Planner. | ||
|
||
The added cashflows are then displayed to the user. | ||
|
||
#### Recurring Cashflow Class Diagram | ||
Given below is the class diagram showing the class structure of the recurring cashflow mechanism: | ||
![](images/cashflow/RecurClassDiagram.png) | ||
#### Recurring Cashflow Sequence Diagrams | ||
Given below is the sequence diagram showing the recurring cashflow mechanism: | ||
![](images/cashflow/RecurSequence.png) | ||
![](images/cashflow/AddRecurringSequence.png) | ||
|
||
### Budget Feature | ||
|
||
This feature has 5 functions, `set`, `update`, `delete`, `reset`, and `view`. | ||
|
||
![](images/Budget.png) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nice use of reference frames for neater view of the diagram. |
||
|
||
The BudgetCommand will execute the appropriate command and print through `Budget.java` and prints any message to the user through `Ui.java`. | ||
|
||
#### Set and update budget: | ||
|
||
Example: | ||
``` | ||
budget set /b 500 | ||
budget update /b 1000 | ||
``` | ||
The '/b' is followed by the budget amount. The first line will set the budget by calling `setBudget(500)` method in `Budget.java`. | ||
The second line updates the budget by adding or subtracting the difference between the initial and updated amount to the | ||
initial and current budget. This is done through `updateBudget(500)` method in `Budget.java`. Both functions can be seen | ||
in the diagram above | ||
|
||
#### Delete budget: | ||
|
||
![](images/deleteBudget.png) | ||
|
||
The budget will be deleted by setting the initial and current budget to 0 through the `deleteBudget()` method in `Budget.java`. | ||
|
||
Example: `budget delete` | ||
|
||
#### Reset budget: | ||
|
||
![](images/resetBudget.png) | ||
|
||
The budget will be reset by resetting the current budget to the initial budget through the `resetBudget()` method in `Budget.java`. | ||
|
||
Example: `budget reset` | ||
|
||
#### View budget: | ||
|
||
![](images/viewBudget.png) | ||
|
||
The current budget will be shown to the user through the `Ui`. | ||
|
||
Example: `budget view` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good job providing sequence diagrams for 3 functions of your budget feature! |
||
|
||
|
||
## Product scope | ||
### Target user profile | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. May want to add more User Stories to accurately reflect your actual feature implementation in each version.
Comment on lines
432
to
433
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You may want to define your product scope and outline your target user profile. This will help make your developer guide more comprehensive. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Perhaps you could have a clear target user profile which could give the reader a better picture of who the code should cater for |
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
!define LOGIC_COLOR #3333C4 | ||
!define LOGIC_COLOR_T1 #7777DB | ||
!define LOGIC_COLOR_T2 #5252CE | ||
!define LOGIC_COLOR_T3 #1616B0 | ||
!define LOGIC_COLOR_T4 #101086 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall very good DG, very precise and in depth analysis of the code and detailed description.
Maybe could use a single and coherent way of using bullet points (right now the DG contains >>, 1), 1. and Step 1). This could make the DG look as if actually written by a single person.