Такие правила приняты в нашей компании. Они позволяют делать код более читаемым и аккуратным, избегать ошибок, связанных с разными стилями написания кода у людей, работающих над проектом, и в будущем легко редактировать его.
Имена файлов, пакетов
- В именах пакетов используются только строчные буквы.
- Имена Java-классам даются согласно стандартной нотации Java.
- Имена классов должны быть существительными, первые буквы всех слов — заглавные.
- В именах web-папок и файлов используются только строчные буквы. Слова в многословных названиях разделяются подчеркиванием.
Имена методов, переменных
- Названия методов должны быть глаголами, первая буква должна быть строчной, первые буквы внутренних слов — заглавные.
- Имена переменных должны начинаться со строчной буквы, внутренние слова — с заглавной.
- Имена констант составляются из всех заглавных букв, разделенных на слова символом подчеркивания.
Отступы, длина строки, переносы строк
- Отступы должны составлять строго 4 пробела (не знак табуляции).
- Длина строки не должна превышать 80 символов.
- Если длина выражения превышает длину строки, то необходимо разбить его на несколько строк согласно следующим правилам:
- перенос после запятой;
- перенос перед оператором;
- необходимо использовать отступ 8 пробелов для обозначения второй строки разделенного выражения. Последующие строки выравниваются по второй строке либо добавляются новые 8 пробелов для обозначения вложенности.
int result = function1(longExpression1, function2(longExpression2, longExpression3));
Расположение блоков, операторов, пробелы, скобки
- Определение переменных нужно располагать в начале блока, а не «ждать» первого использования переменной. Инициализация должна производиться, по возможности, сразу.
void myMethod() { int count = 0; // beginning of method block if (condition) { int int2; // beginning of "if" block ... } }
- Между именем метода и скобками для списка параметров нет пробела.
getStaffList(String name)
- Параметры разделяются пробелом.
getStaffList(String name, int count)
- Пробелы окружают любой оператор.
res = getCount(); (a > 10) ? b : c;
- Ключевое слово и следующая за ним скобка ( должны разделяться пробелом.
while (b < 100){ … }
- Открывающаяся скобка { располагается на той же строке, что и сигнатура метода/заголовок if, while-блока и т.п.
- Закрывающаяся скобка } выровнена по строке начала данного блока.
public Collection getStaffList(String name) { Collection contacts = Contact.getList(name, RoleHelper.ROLE_AGENT, null, AccessLevel.getStaffDiaryEditLevel(), 0, MAX_NUMBER); return ListHelper.getLabelValueList(contacts); }
- Методы разделяются пустой строкой, объявления свойств класса располагаются по одному на строку.
- На строке располагается только один оператор.
if (b) { return result; }
Структурирование кода
- Методы должны быть короткими, и выполнять только одну задачу (к примеру, почти любой цикл уже достоин того, чтобы вынести его в особый метод).
- Имена методов должны быть самодокументированными.
- Шаблоны ООП должны применяться для структурирования и облегчения восприятия.
Стандарт разработан на основе “Code Conventions for the Java Programming Language” by Sun (http://java.sun.com/docs/codeconv/) с учетом принятых в коллективе практик.