2. Always comment out old code and put new code in in previously released code. Never change the code in place.
I don't necessarily agree with this... especialy with the next recommendation...
3. Regarding marking additions/changes/deletions in the code, remove all such marks and all code BEFORE starting the next full release. For most of my career, I operated in groups where the most recent set of changes would remain in the code, and only prior ones would be cleaned up. I've now come to believe (and am currently operating as such) that a new release should start clean.
While I agree that released code bases should be clean, what's the point of marking changes if they are all going to be removed? If you are looking for tracks in the sand, then 1) The code is not the place to track changes, 2) Maybe source code control is needed, 3) There should be documentation (GASP! Did I just say the "D" word?) for that change in the first place.
4. Related to the previous post, do NOT spend a lot of effort explaining the change itself in the modification log. The modification log will eventually go away. Make your explanations of what's going on in the regular comments, which will stick around indefinitely.
Again, if it's going to go away, then it shouldn't be there.... You're creating work for the sake of documentation that isn't adding any value.
But these too are just my opin, and I well aware of it's value here.
cjard - RE: nested Withs.... EEEWWW.... that's when you create a standard that with statements only go one level.... but then again, I haven't come across a "need" to use it in .NET.
We are also going through the samething in our shop....
Something that hasn't been mentioned yet: Turn OPTION EXPLICIT ON.... I know it's on by default, but it should still be mentioned as part of the standard.
Some of the things we've comeup with have also been a lot more mundane stuff.... casing (using Camel Case vs Pascal Case - whose definitions it seems I've had reversed all the years
) ... Making sure that all methods/subs/functions are atomic. Meaning that they do one thing and one thing only.... even if that one thing is to call 12 other functions.... We've got code that is all over the place in what it does and makes it hard to isolate problems.
With a few exceptions (and it's primarily related to our setup & architecture here), I think cjard's list is spot on.
However, the biggest key to this is going to be consistency. You and your developers have got to all agree on the standards, and stick to them.... and be ruthless about it. Don't give them an inch.... once you open a crack for "jsut this one time"..... you'll be amazed at how many "just this one time" you end up with.
-tg