Skip to content

Commit cc34226

Browse files
Copilotbrunoborges
andauthored
Add Russian translations for errors category
Translate all 7 error pattern content files from German to Russian: - helpful-npe.yaml - multi-catch.yaml - null-in-switch.yaml - optional-chaining.yaml - optional-orelsethrow.yaml - record-based-errors.yaml - require-nonnull-else.yaml Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: brunoborges <129743+brunoborges@users.noreply.github.com>
1 parent df429e0 commit cc34226

File tree

7 files changed

+119
-0
lines changed

7 files changed

+119
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Информативные NullPointerExceptions"
2+
oldApproach: "Криптичная NPE"
3+
modernApproach: "Подробная NPE"
4+
summary: "JVM автоматически сообщает, какая переменная была null."
5+
explanation: "Информативные NPE описывают, какое выражение было null и какая операция завершилась ошибкой. По умолчанию включено начиная с Java 14 — изменений в коде не требуется, достаточно обновить JDK."
6+
whyModernWins:
7+
- icon: "🔍"
8+
title: "Точная переменная"
9+
desc: "Сообщение указывает переменную null в цепочке вызовов."
10+
- icon: ""
11+
title: "Более быстрая отладка"
12+
desc: "Больше не нужно гадать, какой из пяти цепочечных вызовов вернул null."
13+
- icon: "🆓"
14+
title: "Бесплатное улучшение"
15+
desc: "Никаких изменений в коде — достаточно запустить на JDK 14+."
16+
support:
17+
description: "Доступно в JDK 14 (март 2020)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Обработка исключений с Multi-Catch"
2+
oldApproach: "Отдельные блоки catch"
3+
modernApproach: "Multi-Catch"
4+
summary: "Перехват нескольких типов исключений в одном блоке catch."
5+
explanation: "Multi-Catch обрабатывает несколько типов исключений одним и тем же кодом. Переменная исключения является эффективно final, поэтому её можно повторно выбросить без оборачивания."
6+
whyModernWins:
7+
- icon: "📏"
8+
title: "DRY"
9+
desc: "Одна и та же логика обработки пишется один раз, а не трижды."
10+
- icon: "🔄"
11+
title: "Повторный выброс"
12+
desc: "Пойманное исключение можно повторно выбросить с его точным типом."
13+
- icon: "📖"
14+
title: "Наглядность"
15+
desc: "Все обрабатываемые типы видны в одном месте."
16+
support:
17+
description: "Доступно в JDK 7 (июль 2011)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Случай null в switch"
2+
oldApproach: "Проверка перед switch"
3+
modernApproach: "case null"
4+
summary: "Обрабатывать null непосредственно как case в switch — без отдельной проверки."
5+
explanation: "Switch с сопоставлением шаблонов может сопоставлять null как метку case. Это устраняет необходимость проверки null перед switch, делая обработку null явной и наглядной."
6+
whyModernWins:
7+
- icon: "🎯"
8+
title: "Явность"
9+
desc: "Обработка null видна непосредственно в switch."
10+
- icon: "🛡️"
11+
title: "Нет NPE"
12+
desc: "Switch на значение null не выбрасывает NullPointerException."
13+
- icon: "📐"
14+
title: "Всё в одном"
15+
desc: "Все случаи, включая null, в одном выражении switch."
16+
support:
17+
description: "Доступно в JDK 21 LTS (сент. 2023)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Цепочки Optional"
2+
oldApproach: "Вложенные проверки null"
3+
modernApproach: "Конвейер Optional"
4+
summary: "Замена вложенных проверок null на конвейер Optional."
5+
explanation: "Optional.map() связывает допускающие null значения и прерывает цепочку при первом null. orElse() возвращает значение по умолчанию. Это устраняет пирамиду вложенных проверок null."
6+
whyModernWins:
7+
- icon: "🔗"
8+
title: "Цепочки"
9+
desc: "Каждый шаг .map() прозрачно обрабатывает null."
10+
- icon: "📖"
11+
title: "Линейный поток"
12+
desc: "Чтение слева направо вместо вложенных блоков if."
13+
- icon: "🛡️"
14+
title: "Защита от NPE"
15+
desc: "null обрабатывается на каждом шаге — сбои невозможны."
16+
support:
17+
description: "Доступно с JDK 8+ (улучшено в 9+)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Optional.orElseThrow() без Supplier"
2+
oldApproach: "get() или orElseThrow(supplier)"
3+
modernApproach: "orElseThrow()"
4+
summary: "Использовать Optional.orElseThrow() как более ясную альтернативу get(), выражающую намерение."
5+
explanation: "Optional.get() широко считается code smell, поскольку скрывает возможность сбоя. Метод orElseThrow() без аргументов, добавленный в Java 10, делает то же самое, но явно выражает намерение: разработчик ожидает значение и хочет получить исключение, если его нет."
6+
whyModernWins:
7+
- icon: "📖"
8+
title: "Самодокументирующийся"
9+
desc: "orElseThrow() явно сигнализирует, что пустой результат не ожидается."
10+
- icon: "🔒"
11+
title: "Без get()"
12+
desc: "Инструменты статического анализа помечают get() как рискованный; orElseThrow() является идиоматичным."
13+
- icon: ""
14+
title: "Меньше шаблонного кода"
15+
desc: "Не нужен Supplier для стандартного NoSuchElementException."
16+
support:
17+
description: "Доступно с JDK 10 (март 2018)."
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Ответы об ошибках на основе Record"
2+
oldApproach: "Map или громоздкий класс"
3+
modernApproach: "Record-ошибки"
4+
summary: "Использовать Records для лаконичных неизменяемых типов ответов об ошибках."
5+
explanation: "Records отлично подходят для ответов об ошибках — они неизменяемы, имеют встроенные equals/hashCode для сравнения и toString для логирования. Пользовательские конструкторы позволяют выполнять валидацию или задавать значения по умолчанию."
6+
whyModernWins:
7+
- icon: "📏"
8+
title: "Лаконичность"
9+
desc: "Определение типов ошибок в 3 строках вместо 30."
10+
- icon: "🔒"
11+
title: "Неизменяемость"
12+
desc: "Данные об ошибке не могут быть случайно изменены после создания."
13+
- icon: "📋"
14+
title: "Автоматический toString"
15+
desc: "Идеально для логирования — все поля отображаются автоматически."
16+
support:
17+
description: "Доступно в JDK 16 (март 2021)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Objects.requireNonNullElse()"
2+
oldApproach: "Тернарная проверка null"
3+
modernApproach: "requireNonNullElse()"
4+
summary: "Получить ненулевое значение с явным значением по умолчанию — без тернарного оператора."
5+
explanation: "requireNonNullElse возвращает первый аргумент, если он не null, иначе — второй. Значение по умолчанию само не может быть null — при двух null-значениях выбрасывается NPE, что выявляет ошибки на раннем этапе."
6+
whyModernWins:
7+
- icon: "📖"
8+
title: "Явное намерение"
9+
desc: "Название метода точно описывает, что он делает."
10+
- icon: "🛡️"
11+
title: "Null-безопасное значение по умолчанию"
12+
desc: "Значение по умолчанию также проверяется на null."
13+
- icon: "📏"
14+
title: "Читаемость"
15+
desc: "Лучше тернарного оператора для простой логики null-или-по-умолчанию."
16+
support:
17+
description: "Доступно в JDK 9 (сент. 2017)"

0 commit comments

Comments
 (0)