2012-03-20 10 views
21

Я видел это в an MVC3 Razor tutorial на http://www.asp.netСоглашения об именовании в C# - подчеркивает

public ActionResult Index() { 

    return View(_usrs._usrList); 

} 

Не, что использование просто неправильно? Я всегда думал, что [docs]

В C#, я обычно вижу, что используется только при определении основного частного переменной члена для общественной собственности. Другие частные переменные-члены не имели бы подчеркивания. Это использование в основном пошло на wayide с появлением автоматических свойств.

Или это новое соглашение об именах, которое я вижу? Очень интересно об этом использовании в собственном учебнике Microsoft.

P.S: Статья довольно хорошая. Просто, я стараюсь следовать правилам именования для лучшей читаемости.

+2

Я использую символы подчеркивания всегда для частных членов, что облегчает их поиск. '_MyVariable' не разрушает читаемость. –

+0

Eww, метод с названием свойства. Конечно, это должен быть GetIndex(). Возможно, написано программистом на C++. Все довольно субъективно, используйте свои собственные соглашения. –

ответ

22

Хорошая статья, посвященная разработке руководящих принципов стиля C#, находится здесь, в StyleCop.

Исходным руководством для .NET было никогда не использовать подчеркивания, если они не были частью частной переменной-члена, а затем только в качестве префикса, например. _customerId. Вероятно, это было унаследовано от MFC, где «m_» использовалось в качестве префикса для переменных-членов.

Текущая практика заключается не в том, чтобы использовать символы подчеркивания. Несознание между переменными частного члена и параметрами с тем же именем должно выполняться с использованием «this». На самом деле все ссылки на частных членов должны иметь префикс «это».

Единственное место подчеркивания, похоже, используется в методах единичных испытаний. Я не поклонник, но это может сделать методы более читабельными, например Throw_If_Customer_Is_Null(){...}.

+0

никогда не слышал эту рекомендацию по поводу использования «этого».Благодарю. – cori

+24

Я все еще не могу заставить себя переключиться на использование этого. Он просто не чувствует себя хорошо :-) – Phil

+0

, поэтому он менялся ... Мне было интересно, почему образцы проигнорировали его. Мне все еще не очень нравится. Я знаю людей, которые смущаются этим. _что-то еще короче, чем this.something тоже ... угадайте, я просто придерживаюсь подчеркивания – Dbl

1

В ASP. NET MVC 3 подчеркивания используются чаще. Например, все ваши частичные представления, которые вы должны назвать с подчеркиванием, например _MyPartialView.
Это позволяет легко отличить частичные виды и виды в вашем приложении.

В любом случае, в этом примере я не предпочитаю петь подчеркивания, потому что нет необходимости их использовать. Это не так, потому что это хорошая практика писать с подчеркиванием списков ваших сущностей. Но я предпочитаю писать без них.
Итак, оба пути правильные, напишите так, как вы чувствуете себя более комфортно.

+0

+1: О, я вижу. Я больше парень веб-форм. Благодарю. но код здесь является агностиком здесь? здесь список и экземпляр были отмечены символом подчеркивания. – naveen

+0

Да, в этом примере это действительно кардинально-агностик. См. Мое редактирование. –

10

Руководящие принципы приведены здесь http://blogs.msdn.com/b/brada/archive/2005/01/26/361363.aspx и включают условие использования «этого». вместо подчеркивания. Но я нахожу, что переполнение моего кода с помощью «этого» делает код более многословным, загроможденным и трудночитаемым. Кроме того, это, как представляется, реже, чем подчеркивание, так как конвенция «_» представляется более условной.

+0

Похоже, что на самом деле Microsoft никогда не выполняла свои собственные правила, как это ни странно, похоже, что они использовали сочетание ['m_privateVar'] (https://referencesource.microsoft.com/#System/net/System /Net/Sockets/TCPClient.cs,21) и ['_privateVar'] (https://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs,2765070d40f47b98.references) для внутренних внутренних переменных. – jrh

+0

В новых документах: [«Внутренние и частные поля не охватываются рекомендациями»] (https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/names-of-type-members) , – jrh

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