-
Notifications
You must be signed in to change notification settings - Fork 28
Description
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.