Hiding class pointers -- was it a good idea?
Bill Baxter
dnewsgroup at billbaxter.com
Wed Aug 15 00:59:53 PDT 2007
I'm starting to seriously wonder if it was a good idea to hide the
pointers to classes. It seemed kinda neat when I was first using D that
I could avoid typing *s all the time. But as time wears on it's
starting to seem more like a liability.
Bad points:
- Harder to tell whether you're dealing with a pointer or not
(c.f. the common uninitialized 'MyObject obj;' bug)
- To build on the stack, have to use 'scope'
Good points:
+ No need to type '*' everywhere when you use class objects
+ ??? anything else ???
I guess I feel like that if D were Java, I'd never see the pointers,
"Foo foo;" would always mean a heap-allocated thing, and everything
would be cool. But with D sometimes "Foo foo" means a stack allocated
thing, and sometimes it doesn't. I'm starting to think the extra
cognitive load isn't really worth it.
In large part it all stems from the decision to make classes and structs
different. That seems nice in theory, but as time goes on the two are
becoming more and more alike. Classes can now be stack-allocated with
scope. Structs are supposedly going to get constructors, and maybe even
destructors. It kind of makes me think that maybe separating structs
and classes was a bad idea. I have yet to ever once say to myself
"thank goodness structs and classes are different in D!", though plenty
of times I've muttered "dangit why can't I just get a default copy
constructor for this class" or "shoot, these static opCalls are
annoying" or "dang, I wish I could get a weak reference to a struct", etc.
--bb
More information about the Digitalmars-d
mailing list