2009-08-04 2 views
2

Каковы наиболее распространенные соглашения об именах в C# для классов, пространств имен и методов? Общепринято ли иметь методы стиля getter/setter, как в Java?Каковы наиболее распространенные соглашения об именах в C#?

+6

Все, кроме венгерского. –

+0

[http://stackoverflow.com/questions/127427/common-naming-conventions](http://stackoverflow.com/questions/127427/common-naming-conventions) – Raghav

ответ

2

Существует несколько распространенных шаблонов. Я часто вижу и использую в своих проектах:

namespace Company.Concept.SubConcept 
{ 
    public class MyClass 
    { 
     private MyType someData; 

     public MyType SomeData 
     { 
      get { return someData; } 
      set { someData = value; } 
     } 

     public void MyMethod() 
     { 
     } 
    } 
} 
+0

Лично я не поклонник m_ конвенций. Цель этой нотации - рассказать вам об объеме переменной. Тем не менее, я нахожу, что он лучше читает код, чем помогает понять, где объявлена ​​переменная. Если вы сомневаетесь в том, где определена переменная, просто наведите курсор мыши на нее в Visual Studio. Я чувствую, что этот стандарт идет по тому же пути, что и венгерская нотация (помните все префиксы переменных, чтобы напомнить вам о типе переменной: n, l, sz, dw, lpsz и т. Д.) –

5

Нет, нет общего в названиях стилей геттера/сеттера в C#. Свойства должны использоваться почти во всех местах, где вы используете геттер/сеттер в Java.

IMHO, стандарт defacto для соглашений об именах приведен в Руководстве по разработке рамок. Он применяется несколькими инструментами (FxCop) и является доминирующим стилем для многих библиотек, включая BCL.

+2

Обратите внимание, что C# 3.0 + обеспечивает поддержку автоматического -выполнение свойств. И не игнорируйте частный набор. – Brian

+0

Хотя правильное это не дает полной картины. Я знаю, что вы это знаете, но я бы хотел, чтобы ссылка на ответ указывала, что свойства, по сути, являются синтаксическим сахаром для аксессуаров и предпочтительны для явных аксессуаров. При использовании свойства, которое вы действительно ** **, определяете методы доступа. Начиная с C# 3.0, язык предоставляет автоматические свойства, которые будут создавать поля поддержки и соответствующие методы для их получения/установки с помощью синтаксиса автоматического свойства. Исходя из фона Java, мне потребовалось некоторое время, чтобы поймать свойства, пока я не понял, что они на самом деле были. – tvanfosson

11

Guidelines for Names (от Design Guidelines for Developing Class Libraries, в котором вы также найдете разделы о properties и choosing between properties and methods. В этой последней статье вы найдете следующее:

ли использовать свойство, а не метод , если значение свойства хранятся в памяти процесса и имущество будет просто предоставить доступ к значению.

+0

Спасибо за редактирование @ShuggyCoUk; пропустил это. –

Смежные вопросы