Java Portal | Программирование
11.7K subscribers
1.55K photos
116 videos
45 files
1.6K links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
Download Telegram
Java Tip: Не перегружайте методы параметрами

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

Плохо:
createUser(firstName, lastName, street, city, zip, country);


Лучше сгруппировать связанные данные в отдельный объект:
createUser(firstName, lastName,
new Address(street, city, zip, country));


Такой подход:
• делает сигнатуры методов компактнее
• упрощает расширение модели данных
• снижает вероятность ошибок при вызове
• делает код более понятным и самодокументируемым

Если несколько параметров всегда используются вместе — вероятно, им нужен собственный класс или record.
#Java #Refactoring #CleanCode

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
Java: Глубокие цепочки вроде user → address → city — классическая ловушка для NullPointerException. Вложенные проверки if (x != null) быстро разрастаются, и легко пропустить один из уровней.

Optional:
findByEmail(email)
.map(User::getAddress)
.map(Address::getCity)
.orElse("unknown");


Если Optional в API нет, достаточно одной проверки:
if (user == null || user.getAddress() == null)


Такой подход читается лучше, чем множество разбросанных null-проверок, из-за которых сложно понять, какое именно значение может отсутствовать.
#Java #NullSafety

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
8
Java Streams: limit(n) превращает бесконечный поток в конечный.

Полезно при работе со Stream.iterate() / generate() — они могут создавать бесконечные потоки
limit(5) означает: «взять первые 5 элементов и остановиться»
Отлично подходит для выборки данных или получения первых N значений

#Java #Streams

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
7
💡 Java I/O: используйте Files.copy(), чтобы скопировать файл одной строкой.

Отлично подходит для резервных копий: data.csvdata.csv.bak
Используйте REPLACE_EXISTING, если целевой файл уже может существовать
Работает с Path, поэтому код переносим между разными ОС

#Java #Files

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
2
💡 Используйте Optional.orElseThrow(), когда отсутствие значения — это ошибка.

orElse(null)NPE возникает позже, далеко от места поиска значения
orElseThrow() останавливает выполнение в месте возникновения проблемы и выбрасывает понятное исключение
Передавайте Supplier, чтобы в сообщении было указано, какое именно значение отсутствует

#Java #Optional

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
8
Для null-safe проверки равенства лучше использовать Objects.equals(a, b).

a.equals(b) выбросит NullPointerException, если a равен null
Objects.equals корректно обрабатывает null с обеих сторон
Оба значения nulltrue; одно значение nullfalse; иначе вызывается a.equals(b)

#Java #Objects

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🤣1
Используйте Comparator.nullsFirst() или Comparator.nullsLast(), если ключи сортировки могут быть null.

comparing(User::getName) выбросит NullPointerException, если getName() вернёт null.
Оберните компаратор в nullsFirst() или nullsLast(), чтобы явно задать порядок для null.
Для сортировки по нескольким полям добавляйте thenComparing().

#Java #Comparator

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2