Что означает подчеркивание в Delphi4

Я сталкиваюсь со следующим в коде.

_name1
_name2
smeEGiGross:  

В общем, что делает _name1 Подчеркни среднее в Delphi 4?

5 ответов

Решение

Я думаю, что это обычная практика - начинать имена переменных с подчеркивания.

Правила для имен переменных (и компонентов) в Delphi:

  • Имя может быть любой длины, но Delphi использует только первые 255 символов.
  • Первый символ должен быть буквой или подчеркиванием, а не числом.
  • Вы не можете использовать какие-либо специальные символы, такие как знак вопроса (?), Но вы можете использовать подчеркивание (_).
  • Запрещена область пробелов в имени переменной.
  • Зарезервированные слова (такие как начало, конец, если, программа) не могут использоваться в качестве переменных.
  • Delphi нечувствителен к регистру - не имеет значения, используются ли заглавные буквы или нет. Просто убедитесь, что переменные или компоненты используются одинаково во всей программе.

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

В Delphi я предпочитаю ставить поля с префиксом "F", параметры метода с "a" (аргумент) и локальные переменные с "l".

Обновить:

Другое место, где вы можете увидеть подчеркивание, - это после определенных идентификаторов в коде, генерируемом с помощью WSDLImp или TLBImp, чтобы избежать путаницы с существующими идентификаторами Delphi. Например, если не указано иное, "Имя" переименовывается (без каламбура) в "Имя_".

Добавить к ответу Феникса:

* You can use reserved words as identifiers, but you must add a & sign: &then, 
  &unit.
I only use this if another name ís not apropriate.

Я ассоциирую ведущие подчеркивания с C/C++, а не с Delphi. Синтаксис C более ориентирован на символы (например, {, }, || и &&), поэтому подчеркивания идеально подходят. Хотя синтаксис Delphi/Pascal в большей степени ориентирован на текст (начало, конец или, и), подчеркивания выглядят немного странно, так как вы их там не ожидаете.

Это регулярно используется для объема.

Я объявляю все мои приватные переменные с _ в начале, что более распространено в C#/C++.

Это для читабельности и не обязательно ничего не значит.

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

Элементы в интерфейсе COM с префиксом подчеркивания (или были) по умолчанию скрыты браузерами / инспекторами интерфейса, такими как браузер библиотеки VB и т. Д. Это используется, когда элементы публикуются по необходимости, но не предназначены для непосредственного использования.

Члены _AddRef и _Release интерфейса IUnknown являются, пожалуй, наиболее очевидным примером этого.

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

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

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

Другие вопросы по тегам