Как этот оператор имеет смысл? (Соглашение о присвоении имен Sun для переменных Java)

Я заключал этот сегмент в кавычки из документа Sun в течение прошедших нескольких дней и только теперь делаю я останавливаюсь и думаю о том, что он говорит, и я не могу иметь никакого смысла его. Следует иметь в виду, что английский язык не является моим первым языком.

Соглашения о присвоении имен

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

Как это имеет смысл? Разве это не говорит, что имена классов находятся в смешанном случае с нижним регистром, сначала обозначают буквами? Как я должен назвать его class myClass? И константы класса находятся также в смешанном случае с нижним регистром, сначала обозначают буквами? Как вместо Integer.MAX_VALUE, это нужно было назвать integer.maxValue?

И это действительно говорит что-нибудь о том, как сами переменные нужно назвать?

Разве я не анализирую это правильно, или это - на самом деле явная ошибка?

8
задан Bart 10 May 2013 в 11:42
поделиться

4 ответа

Sun приняла это как ошибку, с низким приоритетом:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4311597

описывающую соглашение об именовании переменных (предпоследняя строка в таблице). Это откровенно неверно - класс константы не имеют смешанного регистра, как показывает следующая строка таблицы. И что это за "кроме переменных" бизнес? Текст должен описывать переменные!!!

Текст должен звучать так:

"Все переменные экземпляра и класса находятся в смешанных..."

таким образом, опустив слова "кроме переменных" и "константы класса"

4
ответ дан 5 December 2019 в 17:35
поделиться

Вам нужно прочитать все, чтобы получить контекст:

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

Имена переменных должны быть короткими, но значимыми. Выбор имени переменной должен быть мнемоническим, то есть предназначенным для указания случайному наблюдателю цели ее использования. Односимвольная переменная. имен следует избегать , за исключением временных "выбрасываемых" переменных. Общие имена для временных переменных: i, j, k, m и n для целых чисел; c, d и e для символов .

Таким образом, [локальные] переменные должны быть короткими (это означает, что в них может не хватать «слов», чтобы иметь смешанный регистр).

Все другие переменные (на уровне экземпляра или класса, нелокальные) должны иметь смешанный регистр и начинаться со строчной буквы (и, предположительно, должны быть достаточно «многословными», чтобы иметь возможность иметь смешанный регистр, вроде «lineNumber» вместо «number»);

EDIT (забыл про константы).

В Java есть два способа смотреть на константы:

  1. что-либо со словом final
  2. что-либо с гарантированным значением , которое всегда одинаково

так:

class Foo
{
    public final int variable;
    public final int CONSTANT;

    static
    {
        variable = // generate a random number.
        CONSTANT = 5;
    }
}

Здесь " переменная "является" константой "в том смысле, что, как только ей присвоено значение, она не может быть изменена, но это не константа, как" КОНСТАНТА ", поскольку" КОНСТАНТА "всегда будет иметь значение 5.

Я считаю, что № 2 является только константы в Java.

РЕДАКТИРОВАТЬ №2 (в ответ на комментарий ниже).

Я бы переписал это как:

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

Дополнительное описание можно найти на http://www.codeguru.com/java/tij/tij0071.shtml .

1
ответ дан 5 December 2019 в 17:35
поделиться

Это несколькими строками выше:

Имена классов должны быть существительными, в смешанном регистре с первой буквой каждого внутреннего слова заглавной. Старайтесь, чтобы названия классов были простыми и описательными. Используйте целые слова - избегайте акронимов и аббревиатур (если только аббревиатура не используется гораздо шире, чем длинная форма, например URL или HTML).

class Raster;
class ImageSprite;

и ниже:

Имена переменных, объявленных константами класса, и ANSI-констант должны быть все в верхнем регистре, слова разделяются подчеркиванием ("_"). (ANSI-констант следует избегать для облегчения отладки.)

static final int MIN_WIDTH = 4;

static final int MAX_WIDTH = 999;

static final int GET_THE_CPU = 1;

Противоречиво, нет? "Константы классов" должны быть исключены из этой конвенции переменных, даже если они означают нестатические константы вида public final, поскольку это сбивает людей с толку.

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

3
ответ дан 5 December 2019 в 17:35
поделиться

Это почти наверняка плохо отредактированная версия того, что на самом деле имеется в виду:

Переменные: Все имена переменных (за исключением констант) пишутся в смешанном со строчной первой буквой.

2
ответ дан 5 December 2019 в 17:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: