On Friday, 20 November 2020 at 07:39:10 UTC, norm wrote:
I was reading some posts and this was presented as a snippet of code and was immediately flagged as bad practice.
Eh, I wouldn't quite put it that way. If we're thinking of the same thread, one person said he thought it was a bad idea. That doesn't make it bad practice. It's just his opinion. I think UFCS is an awesome feature. And it's widely used in D code.
I get some people don't like it but occasionally I prefer this syntax. It feels more declarative and fluent in style. Is there a good technical reason why it is bad practice, e.g. does it make it easier to write bugs? Or is it just what people are used to?
I think everyone has their own criteria for when to use UFCS. For example, I don't generally write "foo".writeln myself, because I don't think of writeln as being a property of strings. And that's the lens through which I view UFCS: this operation is akin to a property of this type. Other people might not see it that way, and one (not me) could make an argument that this specific usage is bad practice, but the feature itself rocks.