On 4/10/2011 2:08 PM, Jacob Carlborg wrote:
To start with, if you're using an object orient language like D is, and using classes in your code you basically always loose four columns. Next, if you're writing platform specific code with static if's you're loosing another four columns. If you're also going to annotate all you're functions/methods to take full advantage of D's type system you quickly get quite long function decelerations. @property, @safe, nothrow, const/immutable (possibly several times), template constraints and others.

Have a look at the std.net.isemail module I'm writing: https://github.com/jacob-carlborg/phobos/blob/isemail/std/net/isemail.d

I'm the first one to say that this function is way too long but I*m finding it hard to split it up. But lets focus on the column width instead. This function deals a lot with email status codes which is declared as an enum. Everywhere the function is referring to an email status code it needs to be prefixed with the name of the enum, EmailStatusCode. Since I'm also having quite long names for the enum members, to make them more descriptive, it's quite hard to keep statements within the 80 column limit, even 120 columns. Look at the unit tests.


One thing I find helps specifically for function declarations is to put every parameter on its own line, like the following:

SomeLongType someFunction(
    ParameterType1 parameter1,
    ParameterType2 parameter2,
    SomeEnumType flag1,
    SomeOtherEnumType flag2
) const pure nothrow {

    // Function body.
}

This is much more readable for long functions with more than 2-3 parameters and long, verbose names than putting the entire function declaration on one line.
_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos

Reply via email to