DMD 0.148 - scope guard
Lucas Goss
lgoss007 at gmail.com
Mon Feb 27 17:40:57 PST 2006
>> Chris Miller wrote:
>>>
>>> scope(exit) foo();
>>> scope(success) bar();
>>> scope(failure) baz();
>>
While I don't really like the _'s in on_scope_exit, etc, I don't like
this proposed syntax any more, in fact I think I don't like it as much.
With this proposed syntax it seems like an expression such as an
if/while/for/etc, however, in all of those the condition is user
defined. So this proposed syntax would appear inconsistent.
<rant>
And if there's one thing I dislike in languages and libraries, it's
inconsistencies, right up with it is non descriptive or inconsistent
functions. Don't even get me started on those, I'm looking at you Phobos :)
writefln ... what? write file name? write first line? write f language?
isxdigit ... is x a digit? of course not! why do I need this function?
pardir ... parrot directory? not everyone has the parrot vm.
altsep ... Alt key seperator? does this get the Alt key?
ifind ... integer find? iFind? iWork? is this for Mac only?
First, I don't see why all of the above aren't readable. And second, why
don't they follow the D guidelines of camelCase? (I prefer the
PascalCase myself, but I could live with camelCase if it was
consistent). For example:
writeLine(string), writeLine(string, format)
isHexDigit
parentDirectory
windowsAlternateSeperator
FindFirst
The only reason I can see is "it will make it easier for C/C++
programmers." or, it's shorter. The first has little merit, as
templates, operator overloading, streams, reals etc. are all different
(for good reason of course), and C/C++ programmers will have to learn D
no matter what. As for shorter, you may gain a few seconds (after a
couple hundred lines), but I'd much rather be able to tell what I was
doing at a glance...
(notice: Yes I know, the functions come from C... it's good we hold on
to our history just like C++ did :) )
</rant>
I'd much rather prefer something like:
scopeexit
scopesuccess
scopefailure
Or some derivative:
scopeabort, scopefault, scopedone, scopefinish, scope?
ps. I like the looks of this new feature and find it very elegant. I
prefer this to try/catch/finally.
More information about the Digitalmars-d
mailing list