views:

557

answers:

5

I usually add an m_ in front of private fields and an s_ before static members.

With a code like

protected static readonly Random s_Random = new Random ();

I get the following warnings by VS2008's Code Analysis:

  • CA1709: Microsoft.Naming : Correct the casing of 's' in member name 'Bar.s_Random' by changing it to 'S'.
  • CA1707: Microsoft.Naming : Remove the underscores from member name 'Bar.s_Random'.

How to resolve this issue? Should I simply remove the s_? Or add a global suppression for this warning?

Edit: My company lacks coding standards, so it's up to me to define them for my code. (Yea I know...)

If you think s_ should be removed in general, I'd be glad if you could provide official sources.

+8  A: 

You are not following Microsoft's .NET naming convention that tells you not to prefix stuff with anything. If this is really what you want, add a suppression. Otherwise, follow the guideline by getting rid of s_ and other similar prefixes.

From Names of Type Members:
"Names of Fields" Section: "Do not use a prefix for field names. For example, do not use g_ or s_ to distinguish static versus non-static fields."

Mehrdad Afshari
A: 

Depends on what you want.

If your company policy is to prefix static members with s_ then you should suppress the warning and even add your own rule.

Otherwise fix it to Microsoft's standards and call your member Random.

Gerrie Schenck
A: 

m_ is an old standard for naming. Newer conventions are to not follow this Hungarian notation.

ck
To my knowledge there is no clear consensus on this topic. Could you provide some sources of a deprecation of m_?
mafutrct
Yes, the .NET Framework.
Will
@Will - which is hilarious. "Do as we say, not as we do" - MS
ck
A: 

It's up to you how you want to resolve it. Ignore it, and keep your own naming convention, or follow up the Microsoft standard. Personally, I do not use any prefix for my variables (so that would be 'random' instead of 's_Random' in this case) so I would go with the latter, but if you're really comfortable with this, then nobody forces you to change.

Razzie
A: 
  • CA1709 : protected is not private and needs to be upper case
  • CA1707 : underscores are not according to ms naming convention
Stefan Steinegger