www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - why is "hello".writeln considered bad?

reply norm <normical gmail.com> writes:
I was reading some posts and this was presented as a snippet of 
code and was immediately flagged as bad practice.

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?

Thanks,
norm
Nov 19 2020
next sibling parent reply Mike Parker <aldacron gmail.com> writes:
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.
Nov 19 2020
next sibling parent reply Daniel Kozak <kozzi11 gmail.com> writes:
On Fri, Nov 20, 2020 at 8:55 AM Mike Parker via Digitalmars-d-learn <
digitalmars-d-learn puremagic.com> wrote:

 ...
 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 remember days when I liked UFCS too . Unfortunately it is not so awesome when you use it with IDE. So I am now avoiding UFCS as much as possible and it is a much better experience for me.
Nov 20 2020
next sibling parent Mike Parker <aldacron gmail.com> writes:
On Friday, 20 November 2020 at 10:03:18 UTC, Daniel Kozak wrote:

 I remember days when I liked UFCS too . Unfortunately  it is 
 not so awesome when you use it with IDE. So I am now avoiding 
 UFCS as much as possible and it is a much better experience for 
 me.
Doesn't bother me. Auto-completion is a nice-to-have for me, not a must-have, and I don't miss it when I don't have it.
Nov 20 2020
prev sibling parent reply Martin <martin.brzenska googlemail.com> writes:
On Friday, 20 November 2020 at 10:03:18 UTC, Daniel Kozak wrote:
 I remember days when I liked UFCS too . Unfortunately  it is 
 not so awesome when you use it with IDE.
And I would like to add: if you use in a bigger team. It's annoying when every dev have a own taste.. And together with optional () it's hell - no joke. The need to think about codeatyle definitions in such detail is a nogo for big projects.
Nov 20 2020
parent norm <norm.rowtree gmail.com> writes:
On Friday, 20 November 2020 at 18:46:40 UTC, Martin wrote:
 On Friday, 20 November 2020 at 10:03:18 UTC, Daniel Kozak wrote:
 I remember days when I liked UFCS too . Unfortunately  it is 
 not so awesome when you use it with IDE.
And I would like to add: if you use in a bigger team. It's annoying when every dev have a own taste.. And together with optional () it's hell - no joke. The need to think about codeatyle definitions in such detail is a nogo for big projects.
This is a good point. I find with D there are many different ways to write code and each can look different on the page. Where I work we mandated all D code will be implemented in Phobos style and use Phobos and mir source as guides. Some parts do heavily use UFCS/optional() and some parts do not. We have not had issues with readability, but maybe our D code isn't that complicated because it is mostly PC side data analysis tools. Personally a really like UFCS, even `"hello".writeln;` and I think I'd rather have UFCS than autocompletion. But then I did start out in industry well before autocomplete was a thing so maybe I have never relied on it too much. Thanks all for the replies! norm
Nov 20 2020
prev sibling parent "H. S. Teoh" <hsteoh quickfur.ath.cx> writes:
On Fri, Nov 20, 2020 at 11:03:18AM +0100, Daniel Kozak via Digitalmars-d-learn
wrote:
[...]
    I remember days when I liked UFCS too . Unfortunately  it is not so
    awesome when you use it with IDE. So I am now avoiding UFCS as much
    as possible and it is a much better experience for me.
[...] IMO, if the IDE can't give a good experience with UFCS, then it's the IDE that needs to be fixed, rather than the programmer bending over backwards to please the IDE. T -- I don't trust computers, I've spent too long programming to think that they can get anything right. -- James Miller
Nov 20 2020
prev sibling parent rikki cattermole <rikki cattermole.co.nz> writes:
I was the person who wrote that example.
It was just an example to show how it can be used.

I would not write a function call like that when using a literal.
As Mike said, its all up to personal preference.
Nov 20 2020