Соглашение об именах - подчеркивание в переменных C ++ и C # - PullRequest
123 голосов
/ 29 июня 2010

Обычно имя переменной _var отображается в поле класса. Что означает подчеркивание? Есть ли ссылка на все эти специальные соглашения об именах?

Ответы [ 18 ]

0 голосов
/ 29 июня 2010

Это просто означает, что это поле члена в классе.

0 голосов
/ 29 июня 2010

Из моего опыта (конечно, ограниченного) подчеркивание будет указывать, что это закрытая переменная-член.Как сказал Голлум, это будет зависеть от команды.

0 голосов
/ 29 июня 2010

Теперь обозначение, использующее this, как в this.foobarbaz, допустимо для переменных членов класса C #. Он заменяет старую нотацию "m_" или просто "__". Это делает код более читабельным, потому что нет сомнений в том, на что идет ссылка.

0 голосов
/ 29 июня 2010

Существует вполне законная причина использовать его в C #: , если код должен быть также расширяемым из VB.NET.(В противном случае я бы не стал.)

Поскольку VB.NET нечувствителен к регистру, в этом коде нет простого способа получить доступ к защищенному члену field:

public class CSharpClass
{
    protected int field;
    public int Field { get { return field; } }
}

Напримерэто приведет к получению свойства, а не к полю:

Public Class VBClass
    Inherits CSharpClass

    Function Test() As Integer
        Return Field
    End Function

End Class

Черт, я даже не могу написать field в нижнем регистре - VS 2010 просто продолжает исправлять его.

Чтобы сделать этоЛегко доступный для производных классов в VB.NET, нужно придумать другое соглашение об именах.Префикс подчеркивания является, вероятно, наименее навязчивым и наиболее «исторически приемлемым» из них.

0 голосов
/ 29 июня 2010

Многим людям нравится иметь частные поля с префиксом подчеркивания. Это просто соглашение об именах.

'Официальные' соглашения об именах в C # предписывают простые строчные имена (без подчеркивания) для частных полей.

Мне не известны стандартные соглашения для C ++, хотя подчеркивания очень широко используются.

0 голосов
/ 29 июня 2010

Соглашение об именах, подобное этому, полезно, когда вы читаете код, особенно код, который вам не принадлежит.Строгое соглашение об именах помогает указать, где определен конкретный член, какой это тип члена и т. Д. Большинство групп разработчиков применяют простое соглашение об именах и просто ставят префикс полей участников с подчеркиванием (_fieldName).В прошлом я использовал следующее соглашение об именах для C # (основанное на соглашениях Microsoft для кода платформы .NET, которое можно увидеть с помощью Reflector):

Поле экземпляра: m_fieldName
Статическое поле: s_fieldName
Открытый / Защищенный / Внутренний член: PascalCasedName ()
Частный член: camelCasedName ()

Это помогает людям понять структуру, использование, доступность и местоположение участников при быстром чтении незнакомого кода.

0 голосов
/ 29 июня 2010

Специального соглашения об именовании не существует, но я видел это для частных пользователей.

0 голосов
/ 29 июня 2010

Это просто соглашение, которое некоторые программисты используют, чтобы прояснить, когда вы манипулируете членом класса или какой-либо другой переменной (параметры, локальные для функции и т. Д.).Другим соглашением, которое также широко используется для переменных-членов, является добавление префикса имени к 'm _'.

В любом случае, это только соглашения, и вы не найдете единого источника для всех них.Это вопрос стиля, и у каждой команды разработчиков, проекта или компании есть свои (или даже нет).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...