Dark after Shade Smooth
Smooth shading averages the normals on the model. It approximates the smoothness of the surface on any geometry that is actually not smooth so it is indeed possible to have geometry that looks completely wrong with smooth shading because there is just not enough of it to look smooth.

You should expect smooth shading not to look OK on any sharp corners/edges. If you want the model to look smooth, you should not smooth those corners and edges for example using Auto Smooth and it's Angle parameter: 



Or you could bevel the edges as well to provide adequate amount of geometry for the smooth shading.

You might also want the Normals to be averaged in a way that would take face areas into account so flat parts of your model look correctly and in 2.80 you can now use the Weighted Normal modifier with Weighting Mode set to Face Area:



In previous versions Blender did not have such a functionality natively and an add-on such as Yet Another Vertex Normal Editor (Y.A.V.N.E.) had to be used for this.

Messy and untidy geometry with overlaping elements or non-manifold geometry will cause issues like that as well, this is why it's called untidy or messy. You should avoid concave polygons, n-gons, overlaping geometry, non-manifold geometry, double vertices and things like that to avoid theese problems with shading as well.