Когда следует использовать символ доллара ($) в имени переменной?

Символ доллара ($) является допустимым символом для обозначения переменной, например. String superSecretFormula$;, но когда мы говорим о соглашениях об именах, когда я должен использовать этот символ?

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

Ответ 2

В вашем вопросе отмечена Java, но похоже, что вы спрашиваете о типа символов, которые по-прежнему поддерживаются в Visual Basic, но не широко используется в эти дни (и в течение длительного времени).

Это немного субъективно, но я считаю справедливым сказать: никогда

Один сценарий, в котором вы можете указать префикс имени переменной $, - это при написании кода JavaScript в отличать объекты jQuery.

Изменить

Что касается запуска имени переменной с помощью $, учебники Oracle Java, сообщите нам:

Имя переменной может быть любым юридическим идентификатором - бесконечной последовательностью букв и цифр Юникода, начиная с буквы, знака доллара "$" или символа подчеркивания "_". Однако соглашение состоит в том, чтобы всегда начинать имена переменных с буквы, а не "$" или "_".

Ответ 3

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

Обратитесь к двум связанным вопросам в stackoverflow: В чем смысл $в имени переменной? и Java имя класса, содержащее знак доллара, не удается скомпилировать, если присутствует внутренний класс

Ответ 4

Имя конфликтует с синтетическими полями

Макдауэлл процитировал JLS, вот пример, который не компилируется в Oracle JDK 1.8.0_45 из-за конфликтов имен с искусственными полями:

public class Assert {
    static final boolean $assertionsDisabled = false;
    public static void main(String[] args) {
        assert System.currentTimeMillis() == 0L;
    }
}

Проблема в том, что javac генерирует поле $assertionsDisabled для реализации assert, которое конфликтует с нашим полем, а javac говорит:

the symbol $assertionsDisabled conflicts with a compile synthesized symbol

См. Также: Что делает ключевое слово Java assert и когда его следует использовать?

Ответ 5

Я согласен, что в общем случае следует избегать использования специального символа $, как объяснил Ричард. Тем не менее, я помню, как я видел использование $для определения селектора типа jQuery в проекте реактора . Я думаю, что с осторожностью символ $может помочь определить некоторые красивые API-интерфейсы в Java.

Ответ 6

В Java я использую "_" в качестве префикса для нестатической переменной или полях частного класса, а "$" - как префикс для статической переменной частного класса.

Лучше, чем использовать префикс "m", поскольку он не блокирует строку чтения. Вы, очевидно, не стали бы читать "_" или "$", когда вы начнете читать переменное слово, верно? Как _addressMap или $addressMap, но с m, как в Map mAddressMap, это может сбивать с толку в момент, когда вы начинаете его читать.

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