Список не в каком-то определенном порядке и все происходит от правил, применяемых такими инструментами качества кода, как CheckStyle , FindBugs и PMD .
Вот так!
Отформатируйте исходный код и упорядочите импорт в Eclipse:
Eclipse предоставляет возможность автоматического форматирования исходного кода и организации импорта (тем самым удаляя неиспользуемые). Вы можете использовать следующие сочетания клавиш для вызова этих функций.
- Ctrl + Shift + F — форматирует исходный код.
- Ctrl + Shift + O — организует импорт и удаляет неиспользованные.
Вместо того чтобы вручную вызывать эти две функции, вы можете настроить Eclipse на автоматическое форматирование и автоматическую организацию при сохранении файла. Для этого в Eclipse перейдите в « Окно» -> «Настройки» -> «Java» -> «Редактор» -> «Сохранить действия», а затем включите « Выполнить выбранные действия при сохранении» и установите флажок « Форматировать исходный код» + « Организовать импорт» . Избегайте множественных возвратов (точек выхода) в методах:
В ваших методах убедитесь, что у вас есть только одна точка выхода . Не используйте возвраты более чем в одном месте в теле метода.
Например, приведенный ниже код НЕ РЕКОМЕНДУЕТСЯ, поскольку он имеет более одной точки выхода (операторы возврата).
1
2
3
4
5
6
7
|
private boolean isEligible( int age){ if (age > 18 ){ return true ; } else { return false ; } } |
Приведенный выше код можно переписать следующим образом (конечно, приведенный ниже код еще можно улучшить, но это будет позже).
1
2
3
4
5
6
7
8
9
|
private boolean isEligible( int age){ boolean result; if (age > 18 ){ result = true ; } else { result = false ; } return result; } |
Упростите методы if-else:
Мы пишем несколько служебных методов, которые принимают параметр, проверяют некоторые условия и возвращают значение, основанное на условии. Например, рассмотрим метод isElitable, который вы только что видели в предыдущем пункте.
1
2
3
4
5
6
7
8
9
|
private boolean isEligible( int age){ boolean result; if (age > 18 ){ result = true ; } else { result = false ; } return result; } |
Весь метод может быть переписан в виде одного оператора возврата, как показано ниже.
1
2
3
|
private boolean isEligible( int age){ return age > 18 ; } |
Не создавайте новые экземпляры Boolean, Integer или String:
Избегайте создания новых экземпляров Boolean, Integer, String и т. Д. Например, вместо использования new Boolean(true)
, используйте Boolean.valueOf(true)
. Более поздний оператор имеет тот же эффект, что и предыдущий, но он улучшил производительность.
Используйте фигурные скобки вокруг операторов блока.
Никогда не забывайте использовать фигурные скобки вокруг операторов уровня блока, например if , for , while . Это уменьшает неоднозначность вашего кода и исключает вероятность появления новой ошибки при изменении оператора уровня блока.
НЕ РЕКОМЕНДУЕТСЯ
1
2
3
4
|
if (age > 18 ) result = true ; else result = false ; |
РЕКОМЕНДУЕМЫЕ
1
2
3
4
5
|
if (age > 18 ){ result = true ; } else { result = false ; } |
Отметьте параметры метода как окончательные, где это применимо:
Всегда помечайте параметры метода как окончательные, где это применимо. Если вы сделаете это, когда вы случайно измените значение параметра, вы получите предупреждение компилятора. Кроме того, это заставляет компилятор оптимизировать байт-код в лучшую сторону.
РЕКОМЕНДУЕМЫЕ
1
|
private boolean isEligible( final int age){ ... } |
Назовите открытые статические конечные поля в UPPERCASE:
Всегда называйте открытые статические конечные поля (также известные как константы ) в UPPERCASE. Это позволяет легко отличать постоянные поля от локальных переменных.
НЕ РЕКОМЕНДУЕТСЯ
public static final String testAccountNo = '12345678';
РЕКОМЕНДУЕМЫЕ
public static final String TEST_ACCOUNT_NO = '12345678';
,
Объедините несколько операторов if в одно:
Везде, где возможно, попытайтесь объединить несколько операторов if в один.
Например, приведенный ниже код;
1
2
3
4
5
|
if (age > 18 ){ if ( voted == false ){ // eligible to vote. } } |
может быть объединен в отдельные операторы if , как:
1
2
3
|
if (age > 18 && !voted){ // eligible to vote } |
переключатель должен иметь значение по умолчанию :
Всегда добавляйте регистр по умолчанию для операторов switch .
Избегайте дублирования строковых литералов, вместо этого создайте константу:
Если вам нужно использовать строку в нескольких местах, не используйте ее как литерал. Вместо этого создайте строковую константу и используйте ее.
Например, из приведенного ниже кода,
1
2
3
4
5
6
|
private void someMethod(){ logger.log( 'My Application' + e); .... .... logger.log( 'My Application' + f); } |
Строковый литерал «My Application» можно сделать константой и использовать в коде.
1
2
3
4
5
6
7
8
|
public static final String MY_APP = 'My Application' ; private void someMethod(){ logger.log(MY_APP + e); .... .... logger.log(MY_APP + f); } |
Дополнительные ресурсы:
- Сборник лучших практик Java .
- Список доступных проверок Checkstyle .
- Список наборов правил PMD
Ссылка: Общие нарушения кода в Java от нашего партнера JCG Веры Сундар в блоге