Java. Практические советы по написанию чистого кода

от автора

Привет, Хабр!

Давайте сегодня обсудим качественный код. Конечно, основные принципы очевидны: читаемость, поддерживаемость, эффективность. Но в этой статье я хочу поделиться не сухой теорией, а практическими приемами, которые мы с коллегами выработали в процессе наставничества над начинающими автотестировщиками. У нас сформировалось несколько рекомендаций и лайфхаков, о которых я расскажу далее.

1. Использование var (Java 10+)

Ключевое слово var может ухудшить читаемость кода, поэтому в большинстве случаев рекомендуем его избегать. Конечно же, за исключением ситуаций, когда речь идет о локальных переменных, если их тип очевиден, а между местом объявления этой переменной и местом ее использования — не более одного экрана кода.

Примеры:

Плохо:

var result = someService.calculate();  

Лучше:

CalculationResult result = someService.calculate(); 

2. Обработка ресурсов с try-with-resources

Для работы с ресурсами, реализующими AutoCloseable, всегда предпочтительнее использовать try-with-resources, чем ручное закрытие в finally.

Пример:

try (InputStream input = new FileInputStream("file.txt")) {       } 

3. Лямбды и функциональные интерфейсы вместо анонимных классов

Лямбда-выражения делают код более лаконичным и легко читаемым.

Пример:

Старый стиль:

button.addActionListener(new ActionListener() {       @Override       public void actionPerformed(ActionEvent e) {           System.out.println("Clicked!");       }   });

С лямбдой:

button.addActionListener(e -> System.out.println("Clicked!"));

4. Stream API вместо циклов

Если использовать Stream API, улучшится читаемость, и вы сможете писать более декларативный код.

Пример:

List<String> filteredNames = names.stream()       .filter(name -> name.startsWith("A"))       .collect(Collectors.toList()); 

5. Многострочные строки («»»…»»»)

В Java 15+, если строки длинные, лучше использовать Text Block ("""...""") вместо экранированных строк.

Пример:

Менее читабельно:

String json = "{\"name\":\"John\", \"age\":30}";  

Более читабельно:

String json = """       {           "name": "John",           "age": 30       }       """;  

6. Временное сохранение изменений в Git (stash)

Если вам нужно переключиться на другую ветку, но изменения еще не готовы для коммита, используйте git stash.

git stash save "WIP: refactoring service"  # сохранить изменения   git stash list                             # список сохранённых изменений   git stash pop stash@{0}                    # восстановить изменения   git stash pop                              #если он один git stash apply                            #применить без удаления из списка                                                            (в отличие от pop)

6. Обработка исключений с Lombok (@SneakyThrows)

Аннотация @SneakyThrows делает код чище, это избавит нас от избыточных try-catch.

Пример:

Без Lombok:

try {       Files.readAllBytes(Paths.get("file.txt"));   } catch (IOException e) {       throw new RuntimeException(e);   } 

С Lombok:

@SneakyThrows   public byte[] readFile() {       return Files.readAllBytes(Paths.get("file.txt"));   }  

Если же вы пробрасываете исключения, выбирайте наиболее конкретные типы или создавайте свои.

8. Комментарии и документация

Хороший код должен быть самодокументируемым. В случае, если без комментариев не обойтись, используйте Javadoc.

Пример:

/**    * Вычисляет сумму двух чисел.    * @param a первое число    * @param b второе число    * @return сумма a и b    */   public int add(int a, int b) {       return a + b;   } 

9. Сообщения в утверждениях и исключениях

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

Пример:

Плохо:

if (user == null) {       throw new IllegalArgumentException();   }

Лучше:

if (user == null) {       throw new IllegalArgumentException("User must not be null");   } 

И главное — всегда стремитесь к простоте и ясности. Хороший код — это продуманная структура, грамотное именование и внимательное отношение к деталям. Тогда его будет легко читать, дорабатывать и расширять вам и вашим коллегам.


ссылка на оригинал статьи https://habr.com/ru/articles/924350/