So, after some time using D, I found out that `out` isn't used in so many cases, but when used, it can be quite confusing, because if you don't read the documentation, it will be unclear that something is an `out` parameter, specially if you're reading a code that is not yours. Before using `out`, I found myself using more the address operator (&), because it made clear that the target variable would be initialized, but there is an even better and safer way to do that:

So, the best practice when using `out` parameters that I found right now and it becomes way clearer and can increase your performance if you're in a hot path is by void initializing your out variable, e.g:

```d

void initializeFloat(out float f){f = 0.0f;}
void main()
{
    float myFloat = void;
    initializeFloat(myFloat);
}

```

See that without the `void` initialization, all that rests is the function name which is quite readable `initializeFloat` so, something should happen to it. But there are cases which your naming won't be enough expressive to say that you're using an `out` parameter. This situation, void initialization (no initialization at all), is both faster and self documenting for your code, so, try to remember that feature, it took me some time to start using and I just remembered it existed when I was dealing with returning float vertices and there was so many that it appeared on my profiler.

Reply via email to