Skip to content

Suggestions for implementing SOLID principles. #3

@Diantru

Description

@Diantru

Hi PramithaMJ,

At first I was a bit confused about SpringBoot, but after doing a little research I must say that it is a pretty striking approach to creating a microservices system alongside Java.

Although I was analyzing the repository a bit, I noticed several opportunities to improve the maintainability and scalability of the code by applying SOLID principles, which could help avoid potential future confusion, not only for you, but also for anyone interested in using your program.

I can describe to you some aspects that I noticed at the moment in the codes:
Single Responsibility Principle: The CustomerService, EmailService, NotificationConsumer, OrderService, and PaymentService classes are classes that focus on multiple responsibilities at once, which can make the class difficult to maintain or understand for the first time.
Open-Closed Principle: The Customer, PaymentService, ProductService and Notification classes have aspects in which if another specific type of data is required, the original operation would have to be modified.
Inverse Dependency Principle: The CustomerService, EmailService, NotificationConsumer, OrderService, and PaymentService classes are dependent on other concrete classes, which can lead to a significant degree of code coupling, limiting its flexibility and reusability.

Let me be clear that all of this isn't meant to criticize your work. I don't consider myself a great expert on these topics. I'm just trying to offer my recommendations so your program is more effective and more appealing to other users who may come across your repository.

Congratulations on your excellent work,
Best regards, Diantru.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions