x if condition else yminVal = a < b ? a : b;
I never use them, and typically enforce coding standards preventing their use as well. Good code should be easy to read, and if/else blocks are easy to read.
1. The code is shorter, so there's less to read in the first place.
2. The value returned is being used right where it's needed, so you don't have to carry it so far in your head.
I certainly don't use them all the time though, just for short/simple expressions.
is okay with me, at least, when I'm working in languages other than C#, where it's just: string a = b ?? "";
I also use it within other operations, like: var output = string.Format("Something {0} something {1}", string1.Length > 0 ? string1 : "N/A", string2.Length > 0 ? string2 : "whoops");
My general rule of thumb is, if breaking the ternary operation into multiple lines will make it more readable, then you're going too far with the ternary operator.
Enforcing coding standards to ban the use of standard idiom is exactly the sort of reason that I refuse to work for bone-headed cubicle farm-type companies.
The ternary operator is a standard and it is in the language for a good reason - it can make certain statements smaller and involve simpler code (that is, less places to screw up).
Yes it can be abused, but so can everything else. The solution is not to cut out features but to cut out those who are not fit to program.
And for me, saying
foo = bar<baz ? 42 : 0;
is really quite nice.