On Sunday 11 July 2010 23:41:21 Lars T. Kyllingstad wrote: > > That said, the recommended best practice for D is, if possible, to use > scope guards: > > void doStuffWith(string resourceName) > { > auto resource = acquire(resourceName); > scope(exit) release(resource); > > ... // Do stuff with resource here > } > > -Lars
Except that that's two statements and it's no longer RAII. The beauty of doing it entirely in the constructor and destructor is that you only need one statement and the whole thing takes care of itself. With scope, you have to worry about remembering to use scope, and even if you do, that's two statements instead of one. Obviously, it works, but it's not as clean or elegant. - Jonathan M Davis