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

[arshinsikka] iP #469

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

Conversation

arshinsikka
Copy link

@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

@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.*;

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;

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;

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

@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":

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("____________________________________________________________");
}

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.
*/

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;
}

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