Skip to content

[arshinsikka] iP#469

Open
arshinsikka wants to merge 50 commits intonus-cs2103-AY2425S2:masterfrom
arshinsikka:master
Open

[arshinsikka] iP#469
arshinsikka wants to merge 50 commits intonus-cs2103-AY2425S2:masterfrom
arshinsikka:master

Conversation

@arshinsikka
Copy link
Copy Markdown

@arshinsikka arshinsikka commented Feb 6, 2025

🚀 ShinBot: A Smart Task Manager

"Your mind is for having ideas, not holding them." – David Allen (source)

ShinBot is a smart chatbot designed to help users manage tasks efficiently. It is:

  • 📝 Text-based
  • Lightweight & Fast
  • 🎯 Easy to Use

🔹 Features

  • ✅ Task management
  • ⏳ Deadlines (coming soon)
  • 🔔 Reminders (coming soon)

📌 How to Use

  1. Download the latest release from here.
  2. Run it using the command:
    java -jar shin.jar
  3. Add tasks & deadlines using simple commands.
  4. Manage your tasks effortlessly! 🎉

💻 Sample Code
public class Main {
public static void main(String[] args) {
System.out.println("Welcome to ShinBot!");
}
}

✅ To-Do List
Implement Task Management
Add Deadline Support
Implement Notifications (Upcoming Feature!)
GUI Support (Planned Update)

Copy link
Copy Markdown

@Ernestnzx Ernestnzx left a comment

Choose a reason for hiding this comment

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

Overall, I found the code style in this repository easy to read and
follows the convention imposed at.

Though I would like some of the variables could be a little more
descriptive for ease of review. Good job and keep it up!

@@ -0,0 +1,72 @@
import java.io.*;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Wildcard imports are not allowed, explicitly declare the classes that you want to use.

@@ -0,0 +1,13 @@
public class Deadline extends Task {
protected String by;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Small nit, perhaps a more descriptive string name?

@@ -0,0 +1,15 @@
public class Event extends Task {
protected String from;
protected String to;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Small nit, perhaps a more descriptive name for the start and end timings for the Event class?

Copy link
Copy Markdown

@blacksesamezongzi blacksesamezongzi left a comment

Choose a reason for hiding this comment

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

LGTM. Just a few nits to fix.

Comment on lines +41 to +42
switch (taskType) {
case "T":
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 the case be un-indented?

Comment on lines +20 to +25
public void showWelcome() {
System.out.println("____________________________________________________________");
System.out.println("Hello! I'm Shin");
System.out.println("What can I do for you?");
System.out.println("____________________________________________________________");
}
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 descriptions added before this method?

Comment on lines +5 to +8
/**
* Represents a task with a deadline.
*/

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 need to leave no line break between the description and the method section?

Comment on lines +16 to +18
public LocalDate getFrom() { // ✅ Add this getter
return from;
}
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 the way you explain the reason you make this change in your commit.

Several methods in Shin.java and related classes exceed reasonable lengths and violate SLAP. Long methods decrease readability and make the code harder to maintain.

To improve code quality, let's:
* Extract smaller helper methods from long methods such as getResponse() and run() in Shin.java.
* Reduce deep nesting in conditionals for better readability.
* Ensure methods adhere to Single Level of Abstraction (SLAP) principles.

These changes make the code more modular and easier to understand without altering functionality.
Several methods in Shin.java and related classes exceed reasonable lengths and violate SLAP. Long methods decrease readability and make the code harder to maintain.

To improve code quality, let's:
* Extract smaller helper methods from long methods such as getResponse() and run() in Shin.java.
* Reduce deep nesting in conditionals for better readability.
* Ensure methods adhere to Single Level of Abstraction (SLAP) principles.

These changes make the code more modular and easier to understand without altering functionality.
Add a structured User Guide in docs/README.md.
This guide includes:
* Detailed explanations for all commands.
* Installation steps and how to run Shin.
* Frequently Asked Questions (FAQ) section.
* A preview image (Ui.png) showcasing the chatbot interface.

GitHub Pages is enabled for hosting the User Guide, ensuring users can easily access it.
The previous README.md had an unstructured Features section, long descriptions, and lacked readability in the usage commands.

To improve user experience, let's:
* Reformat the Features section for better clarity.
* Use tables to display usage commands in an easy-to-read manner.
* Shorten explanations while retaining necessary details.
* Add a structured FAQ section.
* Ensure proper Markdown formatting for consistency.

These changes make the README more structured, professional, and user-friendly while improving readability for new users.
Shortened long methods and improved readability by extracting helper methods. Enhances maintainability and clarity without altering functionality.
Refactored getResponse() and run() methods to follow SLAP principles. Extracted helper methods to reduce deep nesting and improve readability.
Fix various Java coding standard issues across the project.

- Enforce proper naming conventions (camelCase, PascalCase, SCREAMING_SNAKE_CASE).
- Use K&R style brackets and add spaces around operators.
- Replace wildcard imports with explicit imports.
- Add missing Javadoc comments for public methods.

These changes improve code readability and maintainability.
The table-based approach caused formatting issues on GitHub Pages.
Replaced it with a text-based format using headings and examples.
This ensures the commands are displayed clearly and consistently for users.
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.

5 participants