Java Tip: Не перегружайте методы параметрами
Если метод принимает слишком много аргументов, возрастает риск передать значения в неправильном порядке, а код становится сложнее читать и поддерживать.
❌ Плохо:
✅ Лучше сгруппировать связанные данные в отдельный объект:
Такой подход:
• делает сигнатуры методов компактнее
• упрощает расширение модели данных
• снижает вероятность ошибок при вызове
• делает код более понятным и самодокументируемым
Если несколько параметров всегда используются вместе — вероятно, им нужен собственный класс или record.
#Java #Refactoring #CleanCode
👉 Java Portal
Если метод принимает слишком много аргументов, возрастает риск передать значения в неправильном порядке, а код становится сложнее читать и поддерживать.
❌ Плохо:
createUser(firstName, lastName, street, city, zip, country);
✅ Лучше сгруппировать связанные данные в отдельный объект:
createUser(firstName, lastName,
new Address(street, city, zip, country));
Такой подход:
• делает сигнатуры методов компактнее
• упрощает расширение модели данных
• снижает вероятность ошибок при вызове
• делает код более понятным и самодокументируемым
Если несколько параметров всегда используются вместе — вероятно, им нужен собственный класс или record.
#Java #Refactoring #CleanCode
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
Java: Глубокие цепочки вроде
✅
Если
Такой подход читается лучше, чем множество разбросанных
#Java #NullSafety
👉 Java Portal
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
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8
Java Streams:
✅ Полезно при работе со
✅
✅ Отлично подходит для выборки данных или получения первых N значений
#Java #Streams
👉 Java Portal
limit(n) превращает бесконечный поток в конечный.✅ Полезно при работе со
Stream.iterate() / generate() — они могут создавать бесконечные потоки✅
limit(5) означает: «взять первые 5 элементов и остановиться»✅ Отлично подходит для выборки данных или получения первых N значений
#Java #Streams
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7
💡 Java I/O: используйте
✅ Отлично подходит для резервных копий:
✅ Используйте
✅ Работает с
#Java #Files
👉 Java Portal
Files.copy(), чтобы скопировать файл одной строкой.✅ Отлично подходит для резервных копий:
data.csv → data.csv.bak✅ Используйте
REPLACE_EXISTING, если целевой файл уже может существовать✅ Работает с
Path, поэтому код переносим между разными ОС#Java #Files
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
💡 Используйте
✅
✅
✅ Передавайте
#Java #Optional
👉 Java Portal
Optional.orElseThrow(), когда отсутствие значения — это ошибка.✅
orElse(null) → NPE возникает позже, далеко от места поиска значения✅
orElseThrow() останавливает выполнение в месте возникновения проблемы и выбрасывает понятное исключение✅ Передавайте
Supplier, чтобы в сообщении было указано, какое именно значение отсутствует#Java #Optional
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8
Для null-safe проверки равенства лучше использовать
✅
✅
✅ Оба значения
#Java #Objects
👉 Java Portal
Objects.equals(a, b).✅
a.equals(b) выбросит NullPointerException, если a равен null✅
Objects.equals корректно обрабатывает null с обеих сторон✅ Оба значения
null → true; одно значение null → false; иначе вызывается a.equals(b)#Java #Objects
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🤣1
Используйте
✅
✅ Оберните компаратор в
✅ Для сортировки по нескольким полям добавляйте
#Java #Comparator
👉 Java Portal
Comparator.nullsFirst() или Comparator.nullsLast(), если ключи сортировки могут быть null.✅
comparing(User::getName) выбросит NullPointerException, если getName() вернёт null.✅ Оберните компаратор в
nullsFirst() или nullsLast(), чтобы явно задать порядок для null.✅ Для сортировки по нескольким полям добавляйте
thenComparing().#Java #Comparator
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2
💡 Используй
✅
✅
✅ Удобно для проверок вроде «тот же день» или «тот же час»
#Java #Time
👉 Java Portal
Instant.truncatedTo(...), когда нужно сравнивать время с точностью до дня, часа или минуты.✅
Instant.equals() сравнивает значение целиком, поэтому разница даже в наносекундах даст false✅
truncateTo(ChronoUnit.DAYS) отбрасывает более мелкие единицы времени✅ Удобно для проверок вроде «тот же день» или «тот же час»
#Java #Time
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Используйте
✅
✅ Для намеренной обработки данных лучше использовать
#Java #Streams
👉 Java Portal
Stream.peek() только для отладки, а не для реальной логики.✅
peek() выполняется как побочный эффект, поэтому его вызов легко не заметить или вообще потерять при выполнении Stream pipeline.✅ Для намеренной обработки данных лучше использовать
map() или forEach().#Java #Streams
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Используйте
✅ Он проверяет, ссылаются ли два объекта
#Java #JavaDev
👉 Java Portal
Files.isSameFile(path1, path2), чтобы проверить, указывают ли два пути на один и тот же файл. Метод также учитывает симлинки.Path на один и тот же реальный файл в файловой системе.#Java #JavaDev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Используйте
✅ Несколько потоков могут одновременно удерживать блокировку чтения
✅ Для записи требуется эксклюзивная блокировка
✅ При преобладании чтения пропускная способность выше, чем с одной эксклюзивной блокировкой
#Java #Concurrency
👉 Java Portal
ReentrantReadWriteLock, когда операций чтения много, а записи происходят редко.✅ Несколько потоков могут одновременно удерживать блокировку чтения
✅ Для записи требуется эксклюзивная блокировка
✅ При преобладании чтения пропускная способность выше, чем с одной эксклюзивной блокировкой
#Java #Concurrency
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Используйте
✅
✅
#Java #Files
👉 Java Portal
Files.isSameFile(a, b), чтобы проверить, указывают ли два пути на один и тот же файл.✅
Path.equals сравнивает только текстовое представление пути.✅
isSameFile проверяет реальный файл и учитывает симлинки.#Java #Files
Please open Telegram to view this post
VIEW IN TELEGRAM
Используйте
Так не придётся несколько раз прогонять один и тот же поток данных.
Метод возвращает объект
Для
#Java #Streams
👉 Java Portal
Collectors.summarizingInt(), чтобы за один проход получить количество элементов, сумму, минимум, максимум и среднее значение.Так не придётся несколько раз прогонять один и тот же поток данных.
Метод возвращает объект
IntSummaryStatistics.Для
long и double есть аналогичные методы: summarizingLong() и summarizingDouble().#Java #Streams
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7