Fix #2529: explicit protection package #3651

Kagamin via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Sat Aug 23 04:08:30 PDT 2014


On Saturday, 23 August 2014 at 10:04:40 UTC, Dmitry Olshansky 
wrote:
> For what its worth I'd _prefer_ std.regex.internal as in my 
> opinion internals got to be well contained. But as discussed, 
> `package` doesn't work this way.

It can be a philosophical matter, but in my experience grouping 
by functionality is genuine, and access is an afterthought, so 
grouping by access doesn't work in the long term, as code 
naturally (spontaneously) groups by functionality. The reason is 
when you maintain code, you traverse it according to 
functionality, because you work with implementation, and 
protection is interface, so protection is ignored. If you add a 
public functionality to internal module (ranges often end up like 
that), you can either just qualify it with public access, as it's 
done in normal modules, or refactor and move it to public module, 
so you end up with logically grouped functionality separated 
between two or more modules, which try to enforce grouping by 
access, while in normal modules you have logically grouped 
functionality in the same module even if they have different 
access. Also you can end up with public functionality in internal 
module, if the member proved to be stable, robust and use case 
for it arises.


More information about the Digitalmars-d-announce mailing list