Wed Oct 17 - Avoiding Code Smells by Walter Bright

TheFireFighter TheFireFighter at gmail.com
Thu Nov 8 09:53:59 UTC 2018


On Wednesday, 7 November 2018 at 13:15:03 UTC, Dennis wrote:
>
> If you can't show that there are actual programmers writing 
> appropriately sized modules containg bugs simply because of the 
> lack of a class-private visibility level, then people don't 
> want to engineer a solution to a seemingly non-existant 
> problem, write and maintain the compiler code + specification 
> for it, update existing tutorials, editors and tools, inform 
> existing users about the change, and making the language more 
> complex overall.
>

well you could say the same about pointers. but..what happens 
when a large number of programmers start using pointers?

In the hands of few, it's not such a big issue.

In the hands of the many, well.. we all know the result. Decades 
of bugs!

Should we wait till the bugs start appearing?

But my argument actually is less about bugs, or the potential for 
bugs (although that potential obviously exists). My argument is 
more about the 'untyped' nature of the D module. That is, a type 
(say a class) is 'naked' in a module, exposed for all (in that 
module) to see. It can be violated in any number of ways, by 
other code in the module. I mean that is just fact. It's not 
something I should need to continually point out.

Some say that' fine. A class should be subjected to that 
humiliation.

Other say, if you wan't to prevent that humiliation, then you can 
do it already - that is, you can clothe a class, in D, by 
'walling it off' in it's *own* module.

That immediately tells you something about the nature of the 
module. The module is essentially an untyped universe. It removes 
the clothes from the class, and allows it to be violated. On that 
basis, bugs (or the potential for them), becomes an immediate 
reality - and more so in the hands of the many, as opposed to the 
hands fo the few.

Now, if you're one of those that object to the use of classes 
(and there are many in the D forums), then you would already be 
biased towards dismissing my argument, and don't mind at all if 
the class is subject to humiliation. I would prefer you refrain 
from the discussion, if such bias is going to be used to shutdown 
the argument. Because it just brings the tone of the discussion 
down to a level that nobody wants to participate in - likely it's 
goal in the first place.

Lets be clear. My argument (not my DIP - as there is none) is, 
that it can only strengthen D, if D allowed the programmer the 
option (just the option) to ensure that a class wasn't subjected 
to such humiliation, when there is other code in the module 
besides that class.

The major purpose of a class afterall (understood by most 
programmers), is to impose contraints on interactions with other 
objects (or other code), in order to enforce correctness and 
eliminate inconsistencies. It does this, by clothing itself, so 
that other types cannot operate directly on its naked 
representation.

Yes, I know, you *can* clothe your class in D, but *only* if you 
wall it off in it's module. If you want 2 classes in your module, 
now you need to manage 2 classes across 2 different modules. That 
is an increase in complexity for the programmer.

But you have no choice, because the very instance you put other 
code in that module, you remove that protective clothing.

All I'm asking for, is the ability to have extra code in the 
module, without the module removing the clothes from my types.

Is that really too much too ask?

I do not understand the motivations of those that reject such an 
argument.

(hopefully, the moderator will post this..you never know on these 
forums..peoples post are going missing, or show up in the wrong 
order, days later....what's going on?)


More information about the Digitalmars-d-announce mailing list