UMG vs HUD vs Slate (what is better for developing?)

Which of the following better for developing?

As I see there are three ways

UMG: BP ↔ C++

HUD: BP ↔ C++ (what is the difference with the first?)

Slate: C++ ↔ C++

I’m right?

Now I’m using first (UMG) without blueprint logic (in C++). Is better way for developing with programmers and designers? Or something I don’t know?

(offtop) And where can I use “User Interface → Slate Widget Style” in UMG? Is there tutorial for this?

Thanks.

In my opinion, UMG is better, because you can do everything in a simple way.
If you want to code in C++ with UMG, you can extend the UUserWidget class, otherwise you can use Blueprints.