On Thu, May 08, 2014 at 02:50:54PM +0000, bearophile via Digitalmars-d-learn 
wrote:
> H. S. Teoh:
> 
> >FWIW, for very long function signatures I write it this way:
> >
> >     const(T)[] myVeryLongFunction(T)(const(T)[] arr,
> >                                      int        x,
> >                                      int        y,
> >                                      int        z,
> >                                      ExtraArgs  extraArgs)
> >             pure @safe nothrow
> >             if (is(T : int) &&
> >                 someOtherLongCriteria!T &&
> >                 yetMoreVeryLongCriteria!T)
> >     {
> >             ...
> >     }
> 
> You also need the pre&post-conditions :-)
[...]

I actually had them in my first draft. :)

        const(T)[] myVeryLongFunction(T)(const(T)[] arr,
                                         int        x,
                                         int        y,
                                         int        z,
                                         ExtraArgs  extraArgs)
                pure @safe nothrow
                if (is(T : int) &&
                    someOtherLongCriteria!T &&
                    yetMoreVeryLongCriteria!T)
        in {
                assert(x >= 0 && x < 5);
                assert(y >= 0 && y < 5);
                assert(z >= 0 && z < 5);
        }
        out(result)
        {
                assert(result[0] >= 0 && result[0] < 5);
                assert(result[1] >= 1 && result[1] < 6);
                assert(result[2] >= 2 && result[2] < 7);
        }
        body
        {
                ...
        }

There. :)


T

-- 
You are only young once, but you can stay immature indefinitely. -- azephrahel

Reply via email to