_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..
Это просто соглашение об именах, поэтому я бы спросил автора, если бы он был.