Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java-code-conventions-ru.docx
Скачиваний:
1
Добавлен:
14.02.2020
Размер:
77.28 Кб
Скачать
      1. Операторы package и import

Первой строчкой кода в большинстве файлов исходных кодов Java является оператор package. После него могут следовать операторы import. Например:

package java.awt;

import java.awt.peer.CanvasPeer;

      1. Объявление классов и интерфейсов

Следующая таблица описывает из чего состоит объявление классов или интерфейсов, в том порядке, как они должны появиться. В разделе "Пример файла исходного кода на Java" ниже приведен образец с комментариями.

Составная часть объявления класса/интерфейса

Примечания

1

Документирующий комментарий класса/интерфейса (/**...*/)

Смотрите раздел "Комментарии для документирования" ниже о том, что должно быть в этом комментарии.

2

Оператор class или interface

3

Если необходимо, то указать комментарий реализации класса/интерфейса (/*...*/)

Здесь содержится любая дополнительная информация по классу или интерфейсу, которая не подходит для документирующего комментария.

4

Переменные (поля) класса (статические)

Сначала открытые (public), затем защищенные (protected) и, наконец, закрытые члены класса (private).

5

Переменные (поля) экземпляра

Сначала public, затем protected, после private.

6

Конструкторы

7

Методы

Эти методы должны быть сгруппированы по функциональности, а не по области действия или доступности. Например, закрытый метод класса может находится между двумя открытыми. Цель - сделать проще чтение и ясность кода.

  1. Отступы

В качестве единицы отступа используется 4 пробела. Точное построение отступов (пробелы или табуляция) не определено. Табуляция должна быть установлена как 8 пробелов (не 4).

    1. Длина строк

Избегайте строки длиннее 80 символов, так как они плохо обрабатываются многими терминалами и инструментами.

Примечание: примеры используемые в документации должны иметь более короткую длину строчек, как правило, не более 70 символов.

    1. Перенос строк

Если выражение не умещается в одну строку, разбейте его, руководствуясь следующими основными принципами:

* Перенос после запятой

* Перенос перед оператором

* Предпочитаются высокоуровневые переносы, чем низкоуровневые.

* Выравнивайте новую строку выражения так, чтобы его начало было на том же уровне как и в предыдущей строке.

* Если приведенные выше правила приводят к сбивающему с толку коду или коду, который жмется к полям справа, просто сделайте вместо этого отступ в 8 пробелов.

Несколько примеров переноса строки в вызовах методов:

function(longExpression1, longExpression2, longExpression3,

longExpression4, longExpression5);

var = function1(longExpression1,

function2(longExpression2,

longExpression3));

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

longName1 = longName2 * (longName3 + longName4 - longName5)

+ 4 * longname6; // РЕКОМЕНДУЕТСЯ

longName1 = longName2 * (longName3 + longName4

- longName5) + 4 * longname6; // ИЗБЕГАТЬ

Два следующих примера иллюстрируют отступы в объявлениях методов. первый случай обычный. Во втором случае следовало бы сдвинуть вторую и третью строки далеко вправо, если бы применялись обычные отступы. Вместо этого строки сдвинуты всего на 8 позиций.

//ОБЫЧНЫЕ ОТСТУПЫ

someMethod(int anArg, Object anotherArg, String yetAnotherArg,

Object andStillAnother) {

...

}

//ОТСТУП НА 8 СИМВОЛОВ, ЧТОБЫ ИЗБЕЖАТЬ ОЧЕНЬ ДЛИННЫХ ОТСТУПОВ

private static synchronized horkingLongMethodName(int anArg,

Object anotherArg, String yetAnotherArg,

Object andStillAnother) {

...

}

В условии оператора if следует в основном использовать 8-ми символьный отступ, т.к. если использование 4-х символьного отступа затруднит поиск тела оператора. Рассмотрим пример:

//НЕ ИСПОЛЬЗУЙТЕ ТАКИЕ ОТСТУПЫ

if ((condition1 && condition2)

|| (condition3 && condition4)

||!(condition5 && condition6)) { //Плохой перенос

doSomethingAboutIt(); //ОЧЕНЬ ЛЕГКО ПРОПУСТИТЬ ЭТУ СТРОЧКУ

}

//ИСПОЛЬЗУЙТЕ ТАКИЕ ОТСТУПЫ В ПОДОБНЫХ СЛУЧАЯХ

if ((condition1 && condition2)

|| (condition3 && condition4)

||!(condition5 && condition6)) {

doSomethingAboutIt();

}

// ИЛИ ИСПОЛЬЗУЙТЕ ЭТО

if ((condition1 && condition2) || (condition3 && condition4)

||!(condition5 && condition6)) {

doSomethingAboutIt();

}

Вот 3 приемлемых способа форматирования тернарных выражений:

alpha = (aLongBooleanExpression) ? beta : gamma;

alpha = (aLongBooleanExpression) ? beta

: gamma;

alpha = (aLongBooleanExpression)

? beta

: gamma;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]