Small troubles with "private"
Gary Willoughby
dev at nomad.so
Tue Nov 5 08:59:08 PST 2013
On Tuesday, 5 November 2013 at 16:00:43 UTC, bearophile wrote:
> 1) I usually write more than one class or struct inside each D
> module, unlike in Java. But sometimes when I move that class or
> struct elsewhere (during refactoring, or in other situations) I
> get access errors to private fields. Those errors were already
> in my code, but I didn't see them because "private" in D means
> module-private.
>
> 2) My unittests are useful to catch bugs when I run them at
> run-time, but they are also use to exercise code, this means to
> actually use it, and catch some bugs statically (instantiating
> templates, etc). But unfortunately such unittests can't catch
> protection bugs because most of my unittests are inside the
> same module, so "private" gets ignored.
>
> 3) A third problem with module-private is that newbies coming
> from Python, C, and other languages that don't have
> private/protected attributes and write little experimental D
> programs, have less chances to _learn_ the true semantics of
> the privacy attributes until they start to spread their classes
> in different modules.
>
> How to solve such little troubles? A possible idea is to add to
> D another attribute, a kind of "private private" that is
> enforced inside the same module. It could be named "super
> private" because D has the "super" keyword :-) But this idea
> doesn't solve all the problems, because sometimes you don't
> want to use a super private attribute.
>
> Bye,
> bearophile
IMHO private should mean private as enforced by other languages
and use another keyword for module level privacy. 'internal'
springs to mind.
More information about the Digitalmars-d-learn
mailing list