Let's Review Your Backend Code | SHALL WE???
HTML-код
- Опубликовано: 2 мар 2022
- In this video I code review code sent by the Amigoscode community.
#amigoscode #programming #codereviews
Don't Forget to
===========================================
💯 Subscribe to Amigoscode - bit.ly/2HpF5V8
💯 Courses Available for free here - amigoscode.com/courses
💯 Join Private Facebook Group and Discord - amigoscode.com/p/join-community
⭐ Table Of Contents ⭐
===========================================
🙊 Here are the goods for all my videos video 🙊
► Recommended Books
===========================================
- Clean Code - amzn.to/2UGDPlX
- HTTP: The Definitive Guide - amzn.to/2JDVi8s
- Clean Architecture - amzn.to/2xOBNXW
► Computer and Monitor
===========================================
- New Apple MacBook Pro - amzn.to/3464Mmn
- Dell 27 INCH Ultrasharp U2719D Monitor - amzn.to/2xM3nW1
- Double Arm Stand Desk Mount - amzn.to/3aYKKfs
- USB C Hub Multiport Adapter - amzn.to/2Jz7NlL
► Camera Gear
=============================================
- Sony ILCE7M3B Full Frame Mirrorless Camera - amzn.to/346QIJn
- Sigma 16 mm F1.4 DC DN - amzn.to/2wbic3Q
- Sigma 33B965 30 mm F1.4 DC DC - amzn.to/39G37Fd
► IDE & Tools I use for coding 💻 🎒
===========================================
- ITerm
- VsCode
- GoLand
- IntelliJ Ultimate
- Sublime
P.S
===========================================
💯 Don't forget to subscribe | bit.ly/2HpF5V8
💯 Join Private Facebook Group and Discord - amigoscode.com/p/join-community
💯 Follow me on Instagram | bit.ly/2TSkA9w
❤️ Thanks for watching - Наука
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
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!
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.
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.
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
If anyone asked me what's the difference between junior and senior developer I will show them this video
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!
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 LOVE THIS! We need more of this . Thanks Amigos
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!
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!
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 !
Code reviews are my favorite programming content on the internet. Subscribed. Please do more! 🙏🏻
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.
I learn english by watching your content, thanks for your efforts! From Russia with love ❤
This is a truly channel for developers unlike other channels that shows any kind of crap except programming itself.
You have a very positive influence on our coding-community. Nice work!
Your sense of fashion is amazing dude, also props for being so informed and knowledgable
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 !
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)
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.
I really enjoy watching these code reviews! I learned a lot watching you review Spring Boot-based app. Well done!
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.
omg!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! im the frist one in the video omggggggg!!!! :D :D
Boa Pedro
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.
Just look at this guy inspiration for all the Muslims, glad to see this guy following sunnah with prayer cap.
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!
I'm from Brazil and your "Olá, tudo bem?" was perfect. Congrats! You have a little of brazilian in your life.
Great content here.. Thank you Nelson for making one! Please bring more code review videos.
am a MERN developer - this is the most helpful content I've found all month. Thanks alot
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
RUclips brought me here and I'm so happy I found you! subscribed.
This video is amazing! Got to learn so much from reviews. Thank you!
It was great video man. Thank you so much for all this tips.
The IDE has also the option to optimize the imports for you when u commit something in your repo. I saw so often unused imports....
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
Wow beautiful content as always 😊😻, haven't been seeing ur channel in a while,(RUclips algorithm hasn't been recommending me ur videos :( ) i realised i missed a lot of interesting videos💫👌... Will be catching up soon
really like this kind of professional code reviews. Would be great if get to see more.
Hey man! :D Awesome video, you could explain more, detailing why he should do it the way you told him.
i encountered so many problems in my project just by watching this video, thank you so much sir.
Really enjoyed watching this. Great stuff, thanks!
Thank you so much! Please do more of these :)
Walaikum as Salam.....
Masha Allah , this is great man ,this helped alot analyzing myself. Looking for more such reviews. Thanks!
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
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.
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
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
First time Im seeing this kind of content on youtube, but its really good. Please more of it
Thank so much for this content, it really helps me get familiar with the backend part of web dev
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
Great video! I Always learning new things from watching your videos. Regards from Tijuana, México
Hello Nelson, I think you should do more of this. It's enlightening. Thumps up 👍
I wanted to give a like every time you said "TEST YOUR CODE". RUclips is full of guys teaching bad practices so this video is GOLD. I'll save it for future reference.
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 :)
Great stuff man, much love all the way from Angola
This video was helpful. Thanks Amigo.
Strongly agree that this is very good educational content, it was entertaining and informative!
The "olá, tudo bem?" made a big smile on my face, thank you
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.
Incredible walkthrough. Insisting more on tests
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!
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 ☝️
I love the way you do the cr, I learned a lot in this video, thanks a lot!!!
@ 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.
Oh man, this type of content is great, thanks bro
we need another video like this Bro
Definitely more of these videos. It would be great for them to go a little longer as well.
This is awesome mate. Great content and a unique approach.
Just came across your channle. Subbed!
The algorithm have blessed your channel.
Thankful for you Amigos I remember being a beginner and you guided me thank you
"What is this, man? Have some tests!" XD haha that was so good.
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.
Grande Nelson! Hope you keep doing more videos like this.
Same
This is really great! Please do more.
it would be nice if you take some time to explain the diference between DAO and Repository. Also the util folder could be a exemple of anemic domain or primitive obsession.
The difference is that they have nothing in common.
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.
wow, you should definitely do more of these
This channel is a gem for the java community
So interesting! Thanks bro
Salam, You love testing bro, I don't test my code, you got me interested about doing them on future hahaha, The airplane example was good.
I've learned so much from you. Thank you!
Hey, nice code review. It's also great to see what keyboard shortcuts you're using. But i have a question, what library have you recommended in 32:30? Because i can't find anything called Openfay
probably he mean openFeign, according to his another video
ruclips.net/video/cehTm_oSrqA/видео.html
Thank you Nelson very much. Keep going
😎👍👍
Please do more of this!!💕
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.
Can you do a video on productivity in Intellij? Like useful keyboard shortcuts, and the thing where you have multiple cursors.
Great content, this is amaizing and an added value 😍
Much L❤VE & Support 💪
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.
Bless you man! Hope you're ballin'!
hope it will be a great series of code reviews
amazing content Nelson, please do more of that :D
hello bro... u really did motivate me to come back to coding and it has been my resolution for this year to catch up with some front end and back end programming so far am really loving , enjoying it...programming has always had a soft spot in me but due to career change i have been about 9 years out of thew game and i have been always feeling like now am too old to catch up but i was really wrong.
so, are you coding now?
Please do some more videos of this type, they are very useful and it is secured to have at least 150k+ views because people are looking into watching and learning from videos like this one. Thank you
Awesome content, Nelson.
Thanks a million.
Hi, I really enjoyed this video !! Im a QA analyst, actually working on a project used for "make devs to the market" where i do functional testes manually and automated tests and other kind of analysis. I also have been studying api development to create some services to help me automate dynamic scenarios. By looking this video, i also have to comment that in my actual scenario, i started to do some code review on devs code because i've spent lots of time testing and reporting errors that could've been avoided by unit tests.
Would you make a code review on my python flask restx apis? I' ve never got a code review from any of my codes and any kind of feedback on it.
I've made apis that use webscrap (consuming php service that does not uses any king of pattern struct for service response) to return data as json and also other kind of services just to learn microservices and other stuff.
Thanks a lot for this kind of content, i'll be joining your discord soon ✌