Strange artifacts in a simple object
The problem is that you have activated the Smooth Shading option of the T menu, but your object is a low-poly mesh. If you try to smooth a low-poly mesh these strange artifacts can happen. It's true that you have given your object a Subdivision Surface modifier that is used to simulate a high-poly mesh, but you have disabled its Display modifier in Viewport, so the artifacts still appear.

You say that you did that because you wanted to have both smooth and sharp edges.

If you want to have a smooth appearance but at the same time keep some sharp edges, add some additional edge loops close to the angles you want to keep sharp. Here is how: