it-swarm.com.ru

Подчеркивает в именах функций

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

//ex.
function _myPrivateFunction(){
}   

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

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

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

20
Alan Storm

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

Эта вики-ссылка довольно информативна на подчеркивание .

13
mentat

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

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

6
Ferdinand Beyer

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

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

Правка: http://framework.zend.com/manual/en/coding-standard.naming-conventions.html

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

3
mhd

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

$_POST $_GET $_SESSION etc..

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

0
Ólafur Waage

Я впервые увидел это при кодировании C++. Маркировка переменных-членов с префиксом "m_" обычно делалась.

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

0
duffymo