Как это утверждение имеет смысл? (Соглашение об именовании Sun для переменных Java) - PullRequest
7 голосов
/ 26 апреля 2010

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

Соглашения об именах

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

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

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

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

Ответы [ 4 ]

4 голосов
/ 26 апреля 2010

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

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

Текст должен гласить:

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

исключая слова «за исключением переменных» и «константы класса»

3 голосов
/ 26 апреля 2010

Это несколько полей над ним:

Имена классов должны быть существительными в смешанном регистре с заглавной первой буквой каждого внутреннего слова. Постарайтесь, чтобы названия ваших классов были простыми и наглядными. Используйте целые слова, избегайте сокращений и аббревиатур (если только аббревиатура не используется гораздо шире, чем полная форма, такая как 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, поскольку это смущает людей.

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

2 голосов
/ 26 апреля 2010

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

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

1 голос
/ 26 апреля 2010

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

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

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

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

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

РЕДАКТИРОВАТЬ (забыл о константах).

Существует два способа просмотра констант в Java:

  1. что-нибудь со словом final
  2. что-нибудь с гарантированным значением это всегда то же самое

так:

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

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

Здесь «переменная» является «константой» в том смысле, что после того, как ей присвоено значение, она не может измениться, но она не является константой, такой как «CONSTANT», поскольку «CONSTANT» всегда будет иметь значение 5.

Я считаю # 2 единственными константами в Java.

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

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

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

Вы можете посмотреть на http://www.codeguru.com/java/tij/tij0071.shtml для более подробного описания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...