How would you format/indent this piece of code?
int ID = Blahs.Add( new Blah( -1, -2, -3) );
or
int ID = Blahs.Add( new Blah(
1,2,3,55
)
);
Edit:
My class has lots of parameters actually, so that might effect your response.
How would you format/indent this piece of code?
int ID = Blahs.Add( new Blah( -1, -2, -3) );
or
int ID = Blahs.Add( new Blah(
1,2,3,55
)
);
My class has lots of parameters actually, so that might effect your response.
or
int ID = Blahs.Add(
new Blah( 1, 2, 3, 55 )
);
I must confess, though, that 76 times out of 77 I do what you did the first time.
I'd go with the one-liner. If the real arguments make one line too long, I would break it up with a variable.
Blah blah = new Blah(1,2,3,55);
int ID = Blahs.Add( blah );
One line, unless there's a lot of data. I'd draw the line at about ten items or sixty, seventy columns in total, whatever comes first.
int ID = Blahs.Add
(
new Blah
(
1, /* When the answer is within this percentage, accept it. */
2, /* Initial seed for algorithm */
3, /* Maximum threads for calculation */
55 /* Limit on number of hours, a thread may iterate */
)
);
All numbers are being added to a result. No need to comment each number separately. A comment "these numbers are added together" will do it. I'm going to do it like this:
int result = Blahs.Add( new Blah(1, 2, 3, 55) );
but if those numbers carry some meaning on their own, each number could stand for something entirely different, for example if Blah
denotes the type for an inventory item. I would go with
int ID = Blahs.Add( new Blah(
1, /* wtf is this */
2, /* wtf is this */
3, /* wtf is this */
55 /* and huh */
));
I would use similar formatting as your first example, but without the redundant space delimiters before and after the parenthesis delimiters:
int id = BLahs.Add(new Blah(-1, -2, -3));
Note that I also wouldn't use an all upper-case variable name in this situation, which often implies something special, like a constant.
I agree with Patrick McElhaney; there is no need to nest it....
Blah aBlah = new Blah( 1, 2, 3, 55 );
int ID = Blahas.Add( aBlah );
There are a couple of small advantage here:
Either split it into two lines:
new_Blah = new Blah(-1, -2, -3)
int ID = BLahs.Add(new_Blah);
Or indent the new Blah(); call:
int ID = BLahs.Add(
new Blah(-1, -2, -3)
);
Unless the arguments were long, in which case I'd probably do something like..
int ID = BLahs.Add(new Blah(
(-1 * 24) + 9,
-2,
-3
));
As a slightly more practical example, in Python I quite commonly do the either of the following:
myArray.append(
someFunction(-1, -2, -3)
)
myArray.append(someFunction(
otherFunction("An Arg"),
(x**2) + 4,
something = True
))
The problem with
Blah aBlah = new Blah( 1, 2, 3, 55 );
int ID = Blahas.Add( aBlah );
is that it messes with your namespace. If you don't need a reference to the Blah you shouldn't create it.
I'd either do it as a one-liner or assign the new Blah
to a variable, depending on whether I'll need to reference that Blah
directly again.
As far as the readability issue which a couple answers have addressed by putting each argument on a separate line with comments, I would address that by using named parameters. (But not all languages support named parameters, unfortunately.)
int ID = BLahs.Add(new Blah( foo => -1, bar => -2, baz => -3 ));
Whatever Eclipse's auto-formatter gives me, so when the next dev works on that code and formats before committing, there aren't weird issues with the diff.