Recommended way to do RAII cleanly
    Jonathan M Davis 
    jmdavisprog at gmail.com
       
    Mon Jul 12 01:38:43 PDT 2010
    
    
  
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
    
    
More information about the Digitalmars-d-learn
mailing list