Каково хорошее соглашение об именовании функциональных переменных большого объема?

StackOverflow https://stackoverflow.com/questions/151594

  •  02-07-2019
  •  | 
  •  

Вопрос

У вас могут быть разные соглашения об именовании членов класса, статических объектов, глобальных объектов и структур.Некоторые из них приведены ниже.

_member
m_member

или, в случае Java, использование this.member.

Но есть ли какой-либо хороший метод или соглашение об именовании для области видимости функциональных переменных, которое передает, когда одна переменная имеет полную область видимости функции или область с коротким сроком службы?

void MyFunction()
{
  int functionScopeVariable;

  if(true)
  {
    //no need for function variable scope naming convention
  }
}
Это было полезно?

Решение

Мы обычно используем префикс l_ в наших функциях для обозначения "local". И это работает довольно хорошо.

Другие советы

Я действительно рекомендую делегировать эту задачу IDE / редактору, который вы используете.

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

Практически каждая достойная IDE может определять разные стили (цвета, шрифты, типы шрифтов, ...) для разных типов переменных (элемент экземпляра, статический элемент, аргумент, локальная переменная, ...), поэтому, позволяя IDE сообщать вам, к какому типу переменной она относится, вы освобождаете вас от необходимости каждый раз вводить эти (в противном случае бесполезные) суффиксы pre- или.

Итак, мое предложение:используйте осмысленные имена без каких-либо префиксов или суффиксов.

Один из методов состоит в том, чтобы следовать правилу о том, что чем больше область видимости переменной, тем длиннее ее имя.Таким образом, глобальные переменные получают длинные описательные имена, в то время как объекты с ограниченной областью действия, такие как переменная индекса цикла, могут быть размером всего в одну букву.

Я использую префиксы или специальные соглашения об именовании для глобальных, статических переменных и переменных-членов, поэтому мне не нужно использовать префиксы для локальных.Я предпочитаю иметь возможность использовать короткие имена локальных переменных, особенно для переменных цикла.

Есть аргумент, что у вас не должно быть "функций большого объема", поэтому не должно быть проблем с именованием - просто используйте соглашения об именовании переменных "функции малого объема".

Рекомендации из MSFT и других руководств по стилю для полей частного экземпляра следующие _memberName (обозначение верблюжьего регистра с префиксом "_").Это также соглашение, используемое в исходном коде многих недавних руководств Microsoft.

Я использую его, потому что оно короче, не венгерское, и R # поддерживает его как правило по умолчанию для полей частного экземпляра.

Мне также это нравится, потому что это как бы скрывает приватные поля от Intellisense, как и должно быть, поскольку вы предпочли бы сначала получить доступ к своим общедоступным участникам.Если я хочу получить доступ к имени свойства и начну вводить текст "Na" первое предложение - это имя свойства общедоступного экземпляра в формате Pascal.В тех редких случаях, когда я хочу получить прямой доступ к личному полю, это вынуждает меня принять сознательное решение начать печатать " ._", затем я получаю полный список моих личных полей во всплывающем окне Intellisense.

Я также видел руководство, в котором говорится, что это должно быть _MemberName, если это базовое поле для общедоступного свойства с именем MemberName (в паскаль-регистровой записи с префиксом "_") Мне лично это не нравится, потому что я считаю, что заглавная буква "М" является избыточной, добавляет ненужные нажатия клавиш и не добавляет никакой дополнительной информации.

На самом деле все сводится к тому, что предлагают стилевые рекомендации для языка, если таковые имеются.

Я думаю, что все прекрасно, пока это передает смысл, касающийся его использования.

Я предпочитаю, чтобы все было просто, я использую:

 m_varname - Class member variables
 g_varname - Global variables

Я использую то же соглашение, что и для членов класса.Среда разработки должна позаботиться о поиске вашего объявления.Если функция настолько велика и запутанна, что становится проблемой, необходимо устранить проблему gretaer.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top