Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Соглашения по оформлению кода Java.docx
Скачиваний:
45
Добавлен:
16.02.2016
Размер:
38.66 Кб
Скачать

3.1.2 Операторы package и import

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

package java.awt;

import java.awt.peer.CanvasPeer;

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

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

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

-----------------------------------------------------------------------------------

1|Документирующий комментарий класса/интерфейса (/**...*/) | Смотрите раздел "Комментарии для документирования" на стр. 9 о том, что должно быть в этом комментарии

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

3|Если необходимо, то указать комментарий реализации класса/интерфейса (/*...*/) | Здесь содержится любая дополнительная информация по классу или интерфейсу, которая не подходит для документирующего комментария.

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

5|Переменные (поля) экземпляра |Сначала public, затем protected, после private.

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

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

4 Отступы

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

4.1 Длина строк

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

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

4.2 Перенос строк

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

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

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

* Предпочитаются переносы на более высоком уровне переносам на низком (более вложенном) уровне.

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

* Если приведенные выше правила приводят к сбивающему с толку коду или коду, который жмется к полям справа, просто сделайте вместо этого отступ в 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,

Objеct 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;