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