On Friday, 27 April 2012 at 12:35:53 UTC, Steven Schveighoffer
wrote:
Huh? The main reason of confusion is that the static method is
named in such a way that it looks like an instance method. So
we prevent that, unless the author of the class (who is
deciding the name of the function) deems it should be called on
instances
example:
struct File
{
static File open(string name) {...} // factory method
this(string name);
}
File f = File("hello");
f.open("world"); // oops! Just opened file world and threw it
away
f = File.open("world");// better!
With your proposal you can still do "f.open("world");" and get
the same result if the author provided alias. You are trying to
solve another problem, that the author should better state if
this is intended. The problem i see is user assumming author is a
smart guy. But at the end he finds out the author is as dumb as
himself {he should have RTFM :)}
I challenge you to name File.open some way where it *wouldn't*
be confusing when called on an instance :)
-Steve
Easy! Don't call on an instance! openFile() out of the struct.
I always add "make_" before any static function, otherwise static
methods should be precise as
http://forum.dlang.org/post/[email protected]