Feedback on Átila's Vision for D
aliak
something at something.com
Sat Oct 19 23:38:51 UTC 2019
On Saturday, 19 October 2019 at 17:27:26 UTC, Nicholas Wilson
wrote:
> On Saturday, 19 October 2019 at 13:45:37 UTC, Aliak wrote:
>> On Saturday, 19 October 2019 at 12:23:36 UTC, Nicholas Wilson
>> wrote:
>>> IME, no. If your module is big enough that you can't keep all
>>> of it in you head and you start calling implementation
>>> details of your classes _by accident_ then either:
>>> a) name your implementation details so they stand out so you
>>> don't call by accident (e.g. a._something() )
>>> b) split up your module into a package so that it fits in
>>> your head, this will (probably) cause you to not be able to
>>> call the implementation details at all, and will thus cause
>>> you to have to think about the organisation of you package
>>> (which is probably a good thing).
>>
>> Solution a is a convention.
>
> Indeed.
>
>> And solution b is fluffy.
>
> How so? Also, you should probably be doing that anyway for
> different reasons.
As in "fits in your head" is not concrete. And it's usually not
just "you" in a team. Plus, IIRC dmd is a prime example where
splitting is not happening because of "reasons". So it's not
always doable either.
Furthermore, neither solution allows you to completely
encapsulate some vars in a type while allowing module functions
to access others that are not accessible outside the module.
>
> Since I don't expect to convince you of anything further, the
> only thing I can suggest is to write a lint rule using the
> compiler as a library (or hack the compiler yourself), since
> changing the behaviour would almost certainly be rejected on
> cost (i.e. breaking stuff) / benefit, and adding a second
> private would probably also be rejected as too narrow a feature
> for marginal, at best, utility.
>
> I can't remember if you do compiler stuff, but I'd be happy to
> help once I have some time (or try slack for faster response
> from others).
Well, the problem is that I've used languages with moduleprivate
and privateprivate and it's from experience that it's cleaner. So
unless there're some actual disadvantages to having that extra
granularity that I'm not seeing, I suppose there can't be any
convincing (and really, I was just trying to point out that the
notion that D's access levels are obviously the correct ones is
arguable, therefore not obviously correct - re Mike's post)
And thank you :) appreciate the offer! But it's not something I
care too much about. And to get something like this in I'd have
to argue for why encapsulation of user defined types is a good
thing. A if I actually have to argue for that, pretty sure it
won't go anywhere. So it's just a level of access I accept is
missing from D - one good thing about it is that it gives you
less choice so you don't need to worry about privateprivate vs
moduleprivate.
But anyway, curious, why do you think it's of marginal utility at
best? And on a related note have you used any languages that
provide both levels of granularity that I mention above?
More information about the Digitalmars-d
mailing list