Подчеркивает в именах функций - PullRequest
20 голосов
/ 24 апреля 2009

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

//ex.
function _myPrivateFunction(){
}   

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

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

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

Ответы [ 5 ]

13 голосов
/ 24 апреля 2009

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

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

6 голосов
/ 24 апреля 2009

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

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

3 голосов
/ 24 апреля 2009

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

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

редактировать: http://framework.zend.com/manual/en/coding-standard.naming-conventions.html

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

0 голосов
/ 24 апреля 2009

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

$_POST $_GET $_SESSION etc..

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

0 голосов
/ 24 апреля 2009

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

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

...