Ayende @ Rahien

It's a girl

It is a matter of style...

Today I freaked out two co-workers by looking at their code and saying (respectively) "How long have you worked with C?" and "You didn't get a lot of time with C++, right?"

The pieces of code in question were: (for the C comment)

Customer customer = null
for(int i=0;i<array.Length;i++)
{
	customer = new Customer();
	//do stuff
}

And: (for the not a lot of time in C++ comment)

int totalCarCount;
if( IsValid )
{
	totalCarCount = GetValidTotalCars();
}
else
{
	totalCarCount = GetInvalidTotalCars();
}

int totalWheelCount;
DoComplexWheelCalculation( out totalWheelCount);

And yes, the examples here are fake, and both are good developers, and I just said what came to mind first :-)

Comments

MarkK
06/24/2007 10:06 PM by
MarkK

As an enthusiatic young developer, I dont suppose you would kindly point out why you made the comments?

I confess I'm naive and dont see the issue with the code samples :)

Ayende Rahien
06/24/2007 10:11 PM by
Ayende Rahien

There isn't any issue with the code samples. :-D

C programmers tend to put declarations at the top of the function, basically.

Mats Helander
06/24/2007 11:30 PM by
Mats Helander

Actually, Classic Basic coders do that too.

/Mats

Frans Bouma
06/25/2007 07:37 AM by
Frans Bouma

as a person who is raised with assembler and C, I had to look very carefully before I saw the issue :) (I first thought: it's the 'GetValid/InvalidTotalCars method which should 1 method with a parameter ;)). It's indeed something one has to work on really hard to get rid of, it took me several years before I got used to declare things when I first needed them instead of at the top of the method.

And then you run into a try/finally clause and you have to declare the variable OUTSIDE the try to be able to access it in the finally block :(

clayton collie
06/25/2007 04:02 PM by
clayton collie

there was a spell a few years back where i was contributing to an opensource project (in c), consulting on a Delphi project (Pascal), while doing C# for some personal work.

needless to say, it was confusing keeping my code from looking confused...

Pierre Henri
06/26/2007 05:46 PM by
Pierre Henri

For the C++ comment, is it because he didn't use the ternary operator?

Or because he used an output parameter instead of a return value?

Ayende Rahien
06/26/2007 05:48 PM by
Ayende Rahien

That was for the NON C++ comment, actually, and it was the variable placing that gave the hint.

Comments have been closed on this topic.