Привет, Хабр!
Давайте сегодня обсудим качественный код. Конечно, основные принципы очевидны: читаемость, поддерживаемость, эффективность. Но в этой статье я хочу поделиться не сухой теорией, а практическими приемами, которые мы с коллегами выработали в процессе наставничества над начинающими автотестировщиками. У нас сформировалось несколько рекомендаций и лайфхаков, о которых я расскажу далее.
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/
Добавить комментарий