Small troubles with "private"
Regan Heath
regan at netmail.co.nz
Wed Nov 6 03:05:52 PST 2013
On Tue, 05 Nov 2013 16:00:41 -0000, bearophile <bearophileHUGS at lycos.com>
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.
I think a compiler flag is the best option. The flag would cause warnings
to appear for each "violation" of strict privacy between classes in the
same module.
R
--
Using Opera's revolutionary email client: http://www.opera.com/mail/
More information about the Digitalmars-d-learn
mailing list