Drawing
a model with good alignment of polygons on its surfaces can solve this
problem before we assign face UVWmap. There are several ways to model this.
1. Standard primitive models are basically well built
in terms of their polygon alignment.

The better way to draw a cylinder is
with a standard primitive rather than to draw a 2d circle and extrude.

Some of the standard primitives also have an option of generating mapping
coordinates.
Draw an inlay object, starting from standard primitive and delete some
of its polygons.
2. Loft object
3. Spline network and patch modeling
An example technique using a spline network.
4. Editable polygons can help to create a proper and
clean alignment of faces on the surfaces as well. I found this the easiest
way to do this:

An example technique, using editably polygon.
Apply UVWmap (face type) and assign a material only after
you have a good alignment of polygons on a surface.