On 5/02/2015 1:24 p.m., Andrei Alexandrescu wrote:
I'm seeing another idiom that seems to become fashionable. Consider this
excerpt from
https://github.com/D-Programming-Language/phobos/blob/master/std/algorithm/iteration.d#L407:


             auto opSlice(size_t low, size_t high)
             in
             {
                 assert(low <= high);
             }
             body
             {
                 import std.range : take;
                 return this[low .. $].take(high - low);
             }

which of course trivially boils down to:

             auto opSlice(size_t low, size_t high)
             {
                 assert(low <= high);
                 import std.range : take;
                 return this[low .. $].take(high - low);
             }

What advantage could possibly be in transforming a 5-liner into a
9-liner? Are we really aiming at writing the maximum possible lines of
code here and using as many language features as possible everywhere?

I think we should dust off that Phobos contributors' guide. Sadly, there
is little we can do against the more subtle issues.


Andrei

So are we recommending against contract based programming for simple getter type methods? Personally I think those auto's are more important to get rid of in this code. They actually do harm for anyone reading the docs.

Reply via email to