"Walter Bright" <[email protected]> wrote in message news:[email protected]... > On 3/30/2012 12:18 AM, Nick Sabalausky wrote: >> While there are definitely times I need to access private state across >> separate components within a module, I find such cases are fairly >> uncommon, >> so I question the wisdom of making it the default behavior. > > If your module has grown so large that you need such encapsulation, > meaning that the "cognitive load" of understanding the module has exceeded > one's grasp, then I submit that the module needs to be broken up into > multiple modules. >
It's not about cognitive load exceeding the brain's capacity (well, I'm sure it can be in some cases), it's about just simply keeping separate things separate without ending up in Java's world of "millions of tiny files for each trivial thing". You should be able to look at a couple unrelated chunks of code in a module (ie they handle completely separate details of the implementation of the module's single conceptual task) and *know* there's no interplay going on simply by virtue of the code not specifically suggesting otherwise via permissive access specifiers. And if those "separate sub-tasks" are small, stucking them each in separate files is a Java-like burden. So if you don't want to go that route, then when you look at them as things are now, well, there might be interplay and there might not be. > There has been a trend in Phobos of having some truly gigantic modules. I > believe this is indicative of a problem in the language. I thought that was a deliberate Phobos style convention. I'm certain I remember you and/or Andrei talking here about a year or two ago about how you didn't want Phobos modules broken up into separate implemetation modules. In fact, I definitely remember now, back early last year when Andrei first brought up the idea of having generalized parser in Phobos, I mentioned my Goldie project and there was a small discussion about the possibility of using that as the "std.parser" or whatever. I specifically remember you saying that, were Goldie to go into Phobos, you'd want it all merged into one module. Ultimately, I backed off on the whole idea as I felt Goldie likely wouldn't be an appropriate fit for Phobos, and that was one of the reasons. > Andrei and I have talked about it, and we think it is because of > difficulties in breaking a module up into submodules of a package. > We think it's something we need to address. Eh? Other people have voiced concerns over that since waaay back in even pre-D1 times. In particular, many people have argued for allowing modules with the same name as a package. Ie: you could have both module "foo" and module "foo.bar". The reasons they gave for wanting this are right along the lines of what you're talking about here. Eventually they got the message that it wasn't gonna happen and they gave up asking for it. Or is there a separate problem you're refering to?
