D's hidden function calls getting crazier.

Paul Backus snarwin at gmail.com
Fri Oct 27 14:35:43 UTC 2023


On Friday, 27 October 2023 at 12:38:10 UTC, Hors wrote:
> It's impossible to tell if reading or writing an object's 
> variable would call a function because of UFCS or @property. it 
> just hurts because you can't know if it's a function call 
> without looking at implementation.
>
> The most basic example is
> ```
> obj.val = 1; // actually calls obj.setVal(1)
> assert(obj.val == 1); // actually calls obj.getVal(), assertion 
> may fail if getVal or setVal is not implemented correctly. 
> Which is unexpected
> ```
>
> To fix this hidden function craziness, UFCS needs to require 
> parantheses, and property function needs to be removed entirely.

If you want to know what function is being called, you can always 
read the documentation.

Every programming language makes its own choices about which 
details get shown directly in the code, and which details require 
you to look something up. Ideally, we would like to show the 
details people care about, and hide the details they don't care 
about, but different people care about different things, so there 
is no choice that will make everyone happy.

If you care very strongly about always being able to tell when a 
function is being called, maybe D isn't the language for you, and 
you'd prefer a language like C or Rust. Or maybe D has enough 
other advantages that this is an annoyance you can learn to live 
with.

Either way, I'd encourage you to keep in mind that your 
perspective isn't the only one, and that people who care about 
different things than you have valid reasons for doing so.


More information about the Digitalmars-d mailing list