Wed Oct 17 - Avoiding Code Smells by Walter Bright

Nicholas Wilson iamthewilsonator at hotmail.com
Wed Oct 31 05:42:26 UTC 2018


On Wednesday, 31 October 2018 at 05:00:12 UTC, myCodeDontSmell 
wrote:
> I did find it confusing however, that you discuss leaky 
> abstractions, and putting your public interface at the 
> beginning of your code (and all the other crap below it)... but 
> then, in D, once your write your abstraction, say a class, with 
> it's public interface, all the code below it can do whatever it 
> likes to that class, making it a leaky abstraction.
>
> That's sure sound like code smell to me.
>
> i.e. A class (perhaps one of the most important abstractions in 
> programming) within a module, is *always* a leaky abstraction 
> (within the module), because of the way the code further down 
> can just ignore the interface. In fact, there is no way at all 
> to ensure code below the class uses that interface.
>
> So I can't help but see contradictions everywhere, in D.

That is by design, because in D the unit of abstraction is the 
module, not the class.
Running into such problems is a sign that your module is too 
large, and should become a package.


More information about the Digitalmars-d-announce mailing list