_Underscores в именах функций

На многих языках с простой возможностью OO (PHP 4) или неправильно понятыми возможностями OO (Javascript, C с помощью указателей на функции и т.д.) вы получите соглашение об именовании функций, в котором используются соответствующие подчеркивания для указания уровень привилегий.

//ex.
function _myPrivateFunction(){
}   

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

  • Где техника впервые появилась из
  • Если когда-либо существовали какие-либо стандартизованные системы (вроде венгерской нотации), разработанные вокруг конвенции

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

Ответ 1

В мире С++ имена участников, начинающиеся с подчеркивания, зарезервированы для использования разработчиками компилятора (или низкоуровневыми STL-API). Это не запрещено компиляторами, но это традиция.

Эта ссылка на wiki довольно информативна на underscore.

Ответ 2

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

В Python префикс имен с подчеркиванием - это больше, чем просто соглашение: Символы, начинающиеся с подчеркивания, не импортируются по умолчанию при импорте "всего" из модуля, поэтому подчеркивание указывает "private"/ "внутреннее использование".

Ответ 3

underscore (_) обозначает частную/защищенную функцию или переменную.

Не знаю, что ВОЗ действительно придумала это, но я знаю, что он поддерживается "Zend" (и стандартами кодирования Zend).

edit: http://framework.zend.com/manual/en/coding-standard.naming-conventions.html

- > раздел B.3.4 → пункт 2

Ответ 4

Я впервые увидел его при кодировании С++. Обычно отмечались переменные-члены-метки с префиксом "m_".

Я предпочитаю не использовать это, когда пишу Java. Я делаю переменные-члены прозрачными с помощью "this".

Ответ 5

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

$_POST $_GET $_SESSION etc..

Это просто соглашение об именах, поэтому я бы спросил автора, если бы он был.