why my mesh get weird shading when I click smooth?
You can mark sharp edges then use an edge split modifier and an subdivision modifier set the edje split modifier so it splits sharp edges.This way you can add more geometry and reduce these "shadows"
Edit:The subdivision modifier goes first and also adding edge creases might help)