Precise texture mapping

Hello.
Is there a better and easier way to achieve a relatively good texture mapping like this:


and not something like this:

without doing this:

Thank you.

I would cut the object in two and assign two aligned box mappings.