"Add some tests, it's not difficult", as a support engineer I wish it was more difficult. So many engineers write crap tests that validates their work. It's like awarding yourself a medal
i feel this. test driven development is something everybody should look into imo. i learned it once and will never write code without it. improves quality of tests and production code
cool video idea! but it would be much more helpful if you would explain shortly why you would do things different (and not just what). So a few questions came up for me: 1. why to use "BigDecimal" instead of "Double" for prices 2. why you think that "implements Serializable" can be removed for the dto class 3. which response code is returned if we throw an exception in a controller, 500? 4. why to additionally add the "@Query" annotation to the method declarations of the repository interface, instead of relying on the method name
I'd actually suggest using the jpa function is better than query, unless you actually have something custom to do. Computer is best at generating these basic queries. The big thing people forget is to ensure their queries hit indexes they have on their table.
Computers can sometimes miscalculate floats with rounding errors. See the video about Floats from Computerphile. Since Double is just a bigger float. You should rather use Integers for dollars and cents so 1 dollar = 100 cents, 1.25 dollar = 125, etc.
I know this first code. It was written in Semana DevSuperior in Brazil. The instructor is quite nice, a really smart guy. But it's really awesome when we can see a feedback like this from Mama Samba.
I liked this a lot! Thanks! Would be nice if you could do these types of content from time to time and also explain like how and why it could be better implemented when you don't agree with some of the stuff you review. Or even make a video for best practices, programming principles, designs like package by feature vs package by layer and etc.
Dear Nelson, thank you for the great content. Please do more of these code-review-style videos. As a beginner it is one of the best ways to see different projects through someone's more experienced eyes. Truly invaluable!
we aleykum Selam, a Muslim doing code Videos, damn I am happy to see a brother sharing his knowledge with The World! We need more people as amazing and nice as you representing there religion in such a good manner! May Allah bless your Heart jazakallahu khairan!
Bro, simply amazing channel. That's awesome that you're doing this public reviews for the people and pointing the improvements. The community needs more people like you.
Hey amigos code I just loved the "old lady" you used on your Thumbnail, she's in a lot of my own videos. About your video? A great Job as always. Congrants!
Greetings from Brazil ! Congratulations for your content, it has helped me a lot! I don't understand English very well, but your diction is very good and you don't speak super fast like other people lol, so I can follow your content more easily! thank you !
The reason for writing tests is not just to be sure that everything works but also to improve your code. Testable code is usually much cleaner. Just to give you guys extra motivation for testing.
I usually skip most of your videos, but this one was an eye catcher. You should keep on doing this type of format. Another idea to consider, you do an open source project with fans and do code review/coding sessions with them.
awesome video! This is the best way to learn how to properly write code ! It's awesome to learn good practices from such pro as You! Please do more in the future !
Hi there, great video there, enjoyed watching it a lot. If you want to make this format even better, you could go a bit more in depth about why things are not working. Well, maybe not naming conventions because they are just conventions, but say: - constructor injection -> you say multiple times to use it over field injection, but you never explain the reasoning behind this - exceptions in controllers -> you say not to throw exceptions in controllers, but never explain why that should be avoided And so on. Basically, I feel like this type of content could have GREAT potential, but that it calls for a more in-depth analysis
I have been working on Software Development for the last 8 years and I never had a code review. Recently I have been promoted to be a tech lead, and I didn't know how to do code reviews. Please, do more of this, and maybe I'll learn how to work better. Thanks.
It's wrong to catch every `Exception` at 6:00, since there are many things that could go wrong. However I think you should catch a custom service exception NotFound (or findById exception if it already throws a DoNotExistException) on the controller and return a HttpStatus.NOT_FOUND. I don't use Spring for years but I don't think IllegalStateException will automatically map to a 404 response. Normally unhandled exceptions will throw a 500 internal error on webservers.
I don't know Spring but on my projects I usually use some kind of exception event or at a higher level than the actual action that does this exception conversion from Not Found from the ORM to the HTTP 404 exception. This avoid having to repeat the try catch in all the controller actions I might have.
@ 33:00 not sure what exactly thats doing but creating new threads on runtime is not a good practice in java because of cpu overhead and vulnerability for dos attacks. Always use a threadpool.
I wanted to give a like every time you said "TEST YOUR CODE". UA-cam is full of guys teaching bad practices so this video is GOLD. I'll save it for future reference.
Really good advice. You always have to remember that the Tech-Lead is not the one who is hiring you but he has to defend your application and if you follow Amigos advice you make it very easy for somebody to defend your position.
I strongly disagree on 2 points: 1) There is no bad thing about using Instant, it's part of Java 8 Date/Time API as LocalDate. 2) The bad practice in repositories is actually to write a @Query when it can work automagically thanks to the method name (I really don't understand why would that be a wrong practice tbh)
I also did not get that. Why define a query when spring is automatically doing it for us? I get it for complex queries but for simple ones I personally prefer it without @Query unless someone has a good reason for it.
This content is awesome! I really enjoyed this video. Its really cool to get an inside look into what is going through an experienced developers mind in a code review!
I wish I had the chance to see code review like this earlier in my career. You are doing a great job جزاكم الله خيرا. I have a question please, why it's not good practice to have an interface for each service? Without interface you're depending on implementation not abstraction.
Completely agree with you. Having dependencies in the constructor is nice, but Dependency Inversion requires you to reference an Interface and not the implementation itself. Otherwise you're introducing unnecessary coupling to that one implementation. Interfaces also are usually easier to mock during tests.
The @Query is usually the bad practice in this case when using JPA. Only use @Query if JPA cannot make the query you are trying to do. Also wrap your repositories in service layers for cleaner implementation.
Please do expand on the feedback you make so people know why doing 'xyz' is not a good idea rather than just this is not good practice, helps strengthening the point as to what can happen if this is not done. Appreciate the video though, one of the most informative ones I've seen in my career!
19:03 In my opinion returning numbers of deleted row isn’t actually a good idea as the method takes a single row id in param it we already know that it will always return 1 in case of success, so i think’s it’s better to return a boolean that will tell if the deletion was successful or not
yeah return the number of deleted row is actually bad because it is not flexible enough for a change to an interface. Imagine if for example later they decide to change the implementation to another database technology that don't support returning number of deleted row -> we now have to change a lot of code to accomodate that. Besides, returning the number of deleted row is such an unnecessary detail which the dependent class need to know: why number of deleted row but not the data that get recently deleted? why number of deleted rows but not boolean value like you said.
I'm always glad whenever I see smart young black software engineers, this was never usually the case like 10 years ago in which very few of us existed. keep up the good work buddy
i totally loved this video. It is super useful to have your feedback since you seem to have a lot of experience with Springboot and Java. Kudos for this video
Wow beautiful content as always 😊😻, haven't been seeing ur channel in a while,(UA-cam algorithm hasn't been recommending me ur videos :( ) i realised i missed a lot of interesting videos💫👌... Will be catching up soon
the avoiding try and catch advice at 7:04 is not that reasonable. The author are trying to provide a custom error message with an apropriate resoponse code in case a exception happen. And that should be the job of controller, not service (service job is to throw custom exception like you show, but it has nothing to do with "exception handling"). A lot of framework also provide a global exception handler of course, so the author can make use of that and decide if it fits them, then it would be a more apropriate fix imo. The intent of the author and what you are trying to achieve with the fix is totally unrelated to each other.
@@speedfastman God gave all of us free will and a ruleset of moral obligations to live by. Now just because a war happens or someone close to you dies. You don't blame God you blame the person who used his free will to cause deaths.
@@speedfastman Without free will you are just a robot, you won't have the ability to make your own choice .This life is not given to us for free, Through out your whole life you are tested. You have the capacity to do good or bad, Hence the reward and punishment according to your actions. You will get reward if you do good things in this life and in the hereafter and for wrongdoers Justice prevails. If not for God you can do bad things and hopefully justice serves but sometimes you get away with it. You don't have a punishment waiting for you in the afterlife and you don't have the fear of being punished by God. Same argument can be put against athiests, Why do humans have the ability to think and make choices? If not then the world wouldn't be so bad right?
It's switching from setter depending injection to constructor based injection. Constructor based, using final is a immutable dependency injection method, whereas with setter based technically the dependency could be changed after initial instantaniation of the controller
I stumbled upon your video by accident, why didn't I do this earlier?? Your content is the best I have ever seen. And yet, what are your background configurations and so on? The appearance of the IDE with the code makes the eyes happy
why is programming services to interfaces bad? like in teh case of IService, for now there is only one implementation, but what if for some reason a need arises to have a -slightly-different implementation of this service? I though programming to an interface always gives more flexibility whether its needed or not?
wa alaikum as'slaam. your videos are true learning material. Not just beginner level but for some experienced like me. Keep them coming brother. jazakaALLAH :)
My understanding is that it’s superfluous because it’s not like you’re going around creating multiple versions of that service. You don’t need a contract for something that you won’t write more than one version of. At least that’s what I think it is. This way you’re forcing yourself to synchronize two classes instead of one, when you only need one.
The money using double or float problem is real. I've seen too many students use it when I help them with assignments. The most infuriating thing about this is that most when I ask to see the books they are using it's written that never use floats to do financial calculations and give examples of why.
No interfaces for services? I thought standard practice was to do something like: UserService as the Interface and UserServiceImpl where the actual implementations go. Same with DAO: UserDao, UserDaoImpl.
You do facade your impl. with an interface. What he meant is the throwing exceptions in the apis because you should handle exceptions at the service layer.
Hello, I don't know if in Java is different, but in C# at least as I know is good to segregate all your services or dependencies by interfaces so you can unit testing them, and also accomplish the Interface Segregation Principiple of SOLID.
I was taught that while using spring you either do injections via @Autowired on fields or constructor. It was said that both ways were correct and we should just pick one and stick with that choice. So, now I see that you remove @Autowired from fields and don't use it on constructor. Am I right that constructor itself is enough for dependency injection and @Autowired annotation is redundant in this case? Because I do use @Autowired on my constructor to do dependency injections having my fields private and final.
This style of content is actually really great. You should definitely do more of this. It's incredibly educational.
when you're on the job. Your team is expected to give you regular code reviews every time you want to merge changes.
yes, another video like this, please! 😉
agree especially when you write code similar to these you can see where you improve
Agreed. I'm looking for my first job as a spring boot developer so these sort of code reviews are "gold".
Absolutely agree.
Getting code reviews from Senior devs is crucial and it’s not so obvious unfortunately.
This is gold actually.
"Add some tests, it's not difficult", as a support engineer I wish it was more difficult. So many engineers write crap tests that validates their work. It's like awarding yourself a medal
i feel this. test driven development is something everybody should look into imo. i learned it once and will never write code without it. improves quality of tests and production code
@@lion816 Just learning how to write fuzz tests. Are there any good resources?
@@matthewchunk3689 we dont really use fuzz testing at work atm, im not so familiar with it sorry :(
hey, i did a great job and my tests prove it. i deserved that medal
@D C what do support engineers do? Thanks!
cool video idea! but it would be much more helpful if you would explain shortly why you would do things different (and not just what).
So a few questions came up for me:
1. why to use "BigDecimal" instead of "Double" for prices
2. why you think that "implements Serializable" can be removed for the dto class
3. which response code is returned if we throw an exception in a controller, 500?
4. why to additionally add the "@Query" annotation to the method declarations of the repository interface, instead of relying on the method name
I have the same question "why do you think that "implements Serializable" can be removed for the dto class"?
I'd actually suggest using the jpa function is better than query, unless you actually have something custom to do. Computer is best at generating these basic queries. The big thing people forget is to ensure their queries hit indexes they have on their table.
Computers can sometimes miscalculate floats with rounding errors. See the video about Floats from Computerphile. Since Double is just a bigger float. You should rather use Integers for dollars and cents so 1 dollar = 100 cents, 1.25 dollar = 125, etc.
You should use Big decimal for money amounts, more precision again then Integer
@@codebitcookie8053 what do you do with 0.9 cents? -> decimals
DON'T FORGET TO
➡️ Join the community here: amigoscode.com/p/join-community
➡️ Checkout best premium programming courses: amigoscode.com/courses
I know this first code. It was written in Semana DevSuperior in Brazil. The instructor is quite nice, a really smart guy. But it's really awesome when we can see a feedback like this from Mama Samba.
i enjoyed this. you're one of the few YT instructors I respect
I liked this a lot! Thanks!
Would be nice if you could do these types of content from time to time and also explain like how and why it could be better implemented when you don't agree with some of the stuff you review.
Or even make a video for best practices, programming principles, designs like package by feature vs package by layer and etc.
Dear Nelson, thank you for the great content. Please do more of these code-review-style videos. As a beginner it is one of the best ways to see different projects through someone's more experienced eyes. Truly invaluable!
we aleykum Selam, a Muslim doing code Videos, damn I am happy to see a brother sharing his knowledge with The World!
We need more people as amazing and nice as you representing there religion in such a good manner!
May Allah bless your Heart jazakallahu khairan!
Bro, simply amazing channel. That's awesome that you're doing this public reviews for the people and pointing the improvements. The community needs more people like you.
Hey amigos code I just loved the "old lady" you used on your Thumbnail, she's in a lot of my own videos.
About your video?
A great Job as always.
Congrants!
If anyone asked me what's the difference between junior and senior developer I will show them this video
I learn english by watching your content, thanks for your efforts! From Russia with love ❤
9:03 - Why "always add the @Query" even if spring boot provides you the implementation based on the method name on many cases?
Greetings from Brazil !
Congratulations for your content, it has helped me a lot!
I don't understand English very well, but your diction is very good and you don't speak super fast like other people lol, so I can follow your content more easily!
thank you !
hello nelson great content, can you show us how to test a secured endpoint in spring boot and how to user swagger with spring security
I'm from Brazil and your "Olá, tudo bem?" was perfect. Congrats! You have a little of brazilian in your life.
I LOVE THIS! We need more of this . Thanks Amigos
The reason for writing tests is not just to be sure that everything works but also to improve your code. Testable code is usually much cleaner.
Just to give you guys extra motivation for testing.
This is a truly channel for developers unlike other channels that shows any kind of crap except programming itself.
am a MERN developer - this is the most helpful content I've found all month. Thanks alot
I usually skip most of your videos, but this one was an eye catcher. You should keep on doing this type of format. Another idea to consider, you do an open source project with fans and do code review/coding sessions with them.
awesome video! This is the best way to learn how to properly write code ! It's awesome to learn good practices from such pro as You! Please do more in the future !
Your sense of fashion is amazing dude, also props for being so informed and knowledgable
omg!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! im the frist one in the video omggggggg!!!! :D :D
Boa Pedro
Hi there, great video there, enjoyed watching it a lot.
If you want to make this format even better, you could go a bit more in depth about why things are not working. Well, maybe not naming conventions because they are just conventions, but say:
- constructor injection -> you say multiple times to use it over field injection, but you never explain the reasoning behind this
- exceptions in controllers -> you say not to throw exceptions in controllers, but never explain why that should be avoided
And so on. Basically, I feel like this type of content could have GREAT potential, but that it calls for a more in-depth analysis
I have been working on Software Development for the last 8 years and I never had a code review. Recently I have been promoted to be a tech lead, and I didn't know how to do code reviews. Please, do more of this, and maybe I'll learn how to work better.
Thanks.
LGTM
Looks good 👍
@@shiningass HHAHAHAHAHAHAHA That killed me.
It's wrong to catch every `Exception` at 6:00, since there are many things that could go wrong. However I think you should catch a custom service exception NotFound (or findById exception if it already throws a DoNotExistException) on the controller and return a HttpStatus.NOT_FOUND. I don't use Spring for years but I don't think IllegalStateException will automatically map to a 404 response. Normally unhandled exceptions will throw a 500 internal error on webservers.
I don't know Spring but on my projects I usually use some kind of exception event or at a higher level than the actual action that does this exception conversion from Not Found from the ORM to the HTTP 404 exception. This avoid having to repeat the try catch in all the controller actions I might have.
@ 33:00
not sure what exactly thats doing but creating new threads on runtime is not a good practice in java because of cpu overhead and vulnerability for dos attacks. Always use a threadpool.
I wanted to give a like every time you said "TEST YOUR CODE". UA-cam is full of guys teaching bad practices so this video is GOLD. I'll save it for future reference.
Really good advice.
You always have to remember that the Tech-Lead is not the one who is hiring you but he has to defend your application and if you follow Amigos advice you make it very easy for somebody to defend your position.
Hey man! :D Awesome video, you could explain more, detailing why he should do it the way you told him.
Walaikum as Salam.....
Masha Allah , this is great man ,this helped alot analyzing myself. Looking for more such reviews. Thanks!
I strongly disagree on 2 points: 1) There is no bad thing about using Instant, it's part of Java 8 Date/Time API as LocalDate. 2) The bad practice in repositories is actually to write a @Query when it can work automagically thanks to the method name (I really don't understand why would that be a wrong practice tbh)
Im agree with you. I use @Query only for complex query or optimisation and instant is not a bad practice
@@sinamarki yes, use the power of jpa without typing the query most of the time is great / easy / readable
Yes please. Dont write unnecessary queries...
Yes
This. Thanks for also pointing that fact about the unnecessary @Query annotation.
You have a very positive influence on our coding-community. Nice work!
Code reviews are my favorite programming content on the internet. Subscribed. Please do more! 🙏🏻
Why is it considered a bad practice not having @Query on top of the methods in the repository?
I also did not get that. Why define a query when spring is automatically doing it for us?
I get it for complex queries but for simple ones I personally prefer it without @Query unless someone has a good reason for it.
It's not bad practice, it's just his opinion. Not everything this guy says is law.
@@Quillraven Agreed
I really enjoy watching these code reviews! I learned a lot watching you review Spring Boot-based app. Well done!
Great video! I Always learning new things from watching your videos. Regards from Tijuana, México
This content is awesome! I really enjoyed this video. Its really cool to get an inside look into what is going through an experienced developers mind in a code review!
This channel is a gem for the java community
I wish I had the chance to see code review like this earlier in my career. You are doing a great job جزاكم الله خيرا.
I have a question please, why it's not good practice to have an interface for each service? Without interface you're depending on implementation not abstraction.
Completely agree with you. Having dependencies in the constructor is nice, but Dependency Inversion requires you to reference an Interface and not the implementation itself. Otherwise you're introducing unnecessary coupling to that one implementation. Interfaces also are usually easier to mock during tests.
@@zlarak No, no interface required. Unneeded bloat.
The @Query is usually the bad practice in this case when using JPA. Only use @Query if JPA cannot make the query you are trying to do. Also wrap your repositories in service layers for cleaner implementation.
Yep i agree ☝️
You went straight to tests, I went straight to the subscribe button.
Nice reviewing!
UA-cam brought me here and I'm so happy I found you! subscribed.
The "olá, tudo bem?" made a big smile on my face, thank you
Please do expand on the feedback you make so people know why doing 'xyz' is not a good idea rather than just this is not good practice, helps strengthening the point as to what can happen if this is not done. Appreciate the video though, one of the most informative ones I've seen in my career!
19:03 In my opinion returning numbers of deleted row isn’t actually a good idea as the method takes a single row id in param it we already know that it will always return 1 in case of success, so i think’s it’s better to return a boolean that will tell if the deletion was successful or not
yeah return the number of deleted row is actually bad because it is not flexible enough for a change to an interface. Imagine if for example later they decide to change the implementation to another database technology that don't support returning number of deleted row -> we now have to change a lot of code to accomodate that. Besides, returning the number of deleted row is such an unnecessary detail which the dependent class need to know: why number of deleted row but not the data that get recently deleted? why number of deleted rows but not boolean value like you said.
I'm always glad whenever I see smart young black software engineers, this was never usually the case like 10 years ago in which very few of us existed. keep up the good work buddy
Oh man, this type of content is great, thanks bro
Really enjoyed watching this. Great stuff, thanks!
i totally loved this video. It is super useful to have your feedback since you seem to have a lot of experience with Springboot and Java. Kudos for this video
Wow beautiful content as always 😊😻, haven't been seeing ur channel in a while,(UA-cam algorithm hasn't been recommending me ur videos :( ) i realised i missed a lot of interesting videos💫👌... Will be catching up soon
Wallahi… this video is awesome brother!
This video is amazing! Got to learn so much from reviews. Thank you!
i encountered so many problems in my project just by watching this video, thank you so much sir.
This is the best series!! I really liked and learned, please keep on giving these review videos
Incredibly useful, it's like a video version of pull request review. Keep it up!
Great content here.. Thank you Nelson for making one! Please bring more code review videos.
It was great video man. Thank you so much for all this tips.
the avoiding try and catch advice at 7:04 is not that reasonable. The author are trying to provide a custom error message with an apropriate resoponse code in case a exception happen. And that should be the job of controller, not service (service job is to throw custom exception like you show, but it has nothing to do with "exception handling"). A lot of framework also provide a global exception handler of course, so the author can make use of that and decide if it fits them, then it would be a more apropriate fix imo. The intent of the author and what you are trying to achieve with the fix is totally unrelated to each other.
This video was helpful. Thanks Amigo.
I can't thank you enough for putting this together. 💖💖 May Allah reward you well
Allah's not really rewarding Ukraine rn. 🤕☹😥
@@speedfastman God gave all of us free will and a ruleset of moral obligations to live by. Now just because a war happens or someone close to you dies. You don't blame God you blame the person who used his free will to cause deaths.
@@forevermist3838 Why would God be so silly to give us free will when he knows we'll have pain and suffering because of it!
@@speedfastman Without free will you are just a robot, you won't have the ability to make your own choice .This life is not given to us for free, Through out your whole life you are tested. You have the capacity to do good or bad, Hence the reward and punishment according to your actions. You will get reward if you do good things in this life and in the hereafter and for wrongdoers Justice prevails. If not for God you can do bad things and hopefully justice serves but sometimes you get away with it. You don't have a punishment waiting for you in the afterlife and you don't have the fear of being punished by God. Same argument can be put against athiests, Why do humans have the ability to think and make choices? If not then the world wouldn't be so bad right?
@@forevermist3838 Is God good and omnipotent? Yes? Then he wouldn't have created suffering. End of story.
This is awesome mate. Great content and a unique approach.
This is incredibly usefull and helpfull especially to someone like me (who has not landed a job yet) to get insights on how things should be
The algorithm have blessed your channel.
Thank you so much! Please do more of these :)
7:04
There is also no need to save entity, as it's being managed by persistence context in @Transactional methods.
Great stuff man, much love all the way from Angola
"What is this, man? Have some tests!" XD haha that was so good.
Hello Nelson! Thanks for sharing great content.
I have a doubt, why are we removing @Autowired and adding constructor injected ?
It's switching from setter depending injection to constructor based injection.
Constructor based, using final is a immutable dependency injection method, whereas with setter based technically the dependency could be changed after initial instantaniation of the controller
First time Im seeing this kind of content on youtube, but its really good. Please more of it
we need another video like this Bro
Great content, this is amaizing and an added value 😍
Much L❤VE & Support 💪
really like this kind of professional code reviews. Would be great if get to see more.
I am happy you are a good Muslim, proud of you bro, hopefully this content will be Hasanat for you ❤️
I stumbled upon your video by accident, why didn't I do this earlier?? Your content is the best I have ever seen. And yet, what are your background configurations and so on? The appearance of the IDE with the code makes the eyes happy
why is programming services to interfaces bad? like in teh case of IService, for now there is only one implementation, but what if for some reason a need arises to have a -slightly-different implementation of this service? I though programming to an interface always gives more flexibility whether its needed or not?
Bro I like the way you said " WALLAHI I'm disappointed" in 3:26 😁😁😁
Thankful for you Amigos I remember being a beginner and you guided me thank you
Grande Nelson! Hope you keep doing more videos like this.
Same
Strongly agree that this is very good educational content, it was entertaining and informative!
that salam hit different bro keep up the great work!!
I love the way you do the cr, I learned a lot in this video, thanks a lot!!!
Definitely more of these videos. It would be great for them to go a little longer as well.
wa alaikum as'slaam. your videos are true learning material. Not just beginner level but for some experienced like me. Keep them coming brother. jazakaALLAH :)
please keep doing this! I didnt quite understand why not to have an interface for each service... if anyone can explain it would be appreciated!
My understanding is that it’s superfluous because it’s not like you’re going around creating multiple versions of that service. You don’t need a contract for something that you won’t write more than one version of. At least that’s what I think it is. This way you’re forcing yourself to synchronize two classes instead of one, when you only need one.
@@RevolutionaryUsername The reason you create mono interfaces like that is exactly for testing, so you can mock an IGameService.
The money using double or float problem is real. I've seen too many students use it when I help them with assignments. The most infuriating thing about this is that most when I ask to see the books they are using it's written that never use floats to do financial calculations and give examples of why.
No interfaces for services? I thought standard practice was to do something like:
UserService as the Interface and UserServiceImpl where the actual implementations go. Same with DAO: UserDao, UserDaoImpl.
I also wonder why he said it was bad practice
can I ask why the standard practice requires you to use interfaces for service?
You do facade your impl. with an interface. What he meant is the throwing exceptions in the apis because you should handle exceptions at the service layer.
Thank so much for this content, it really helps me get familiar with the backend part of web dev
Bless you man! Hope you're ballin'!
Awesome content, Nelson.
Thanks a million.
Hello, I don't know if in Java is different, but in C# at least as I know is good to segregate all your services or dependencies by interfaces so you can unit testing them, and also accomplish the Interface Segregation Principiple of SOLID.
In this case its the dependency inversion principle, and it should be enforced in every language
there is also something called YAGNI
Hello :)
6:49 : if orElseThrow is used, where is the exception caught since you removed the catch clause?
7:54 : why is serializable being removed?
7:29 What's wrong with using a UTC Instant in the dto?
hope it will be a great series of code reviews
Hello, Nelson. What are hotkeys for writing the same on multiple line?(final in this video 7:40)
Выделяешь слово которое нужно выделить ещё где то и жмешь alt j
I was taught that while using spring you either do injections via @Autowired on fields or constructor. It was said that both ways were correct and we should just pick one and stick with that choice.
So, now I see that you remove @Autowired from fields and don't use it on constructor. Am I right that constructor itself is enough for dependency injection and @Autowired annotation is redundant in this case? Because I do use @Autowired on my constructor to do dependency injections having my fields private and final.
This is what I often looking for on youtube, the only channel that doing code review is Laravel Daily, it's hard to find a content like this.
That "olá tudo bem ?" was perfect. Nice portuguese bro