You've successfully subscribed to Заметки Разработчиков
Great! Next, complete checkout for full access to Заметки Разработчиков
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.
Success! Your billing info is updated.
Billing info update failed.

junior

Модификаторы доступа в Java

Коротко о существующих модификаторах доступа: public, protected, default, private.

private (приватный): члены класса доступны только внутри класса. Для обозначения используется служебное слово private.

default, package-private (доступ на уровне пакета): видимость класса/членов класса только внутри пакета. Является модификатором доступа по умолчанию - специальное обозначение не требуется.

protected (защищённый): члены класса доступны внутри пакета и в наследниках. Для обозначения используется служебное слово protected.

public (публичный): класс/члены класса доступны всем. Для обозначения используется служебное слово public.

Последовательность модификаторов от самого открытого до самого закрытого: public, protected, default, private.

Визуально модификаторы доступа переменной класса можно представить таким образом:

Подробнее про все существующие модификаторы читайте в этой статье 👇

Обзор всех модификаторов в Java
Модификаторы это ключевые слова в Java, которые ”изменяют и регулируют” работу классов, методов и переменных.

Материалы по Garbage Collector

Решил собрать в одном месте материалы для начинающих разработчиков на Java о сборщиках мусора. Перед изучением GC стоит разобраться в устройстве памяти JVM 1. Сборка мусора в Java. В общих чертах о сборке мусора. 2. Владимир Иванов — G1 Garbage Collector. Закрепляем занания и подробно разбираемся в G1. 3. Алексей Шипилёв

Решил собрать в одном месте материалы для начинающих разработчиков на Java о сборщиках мусора.

Перед изучением GC стоит разобраться в устройстве памяти JVM
  1. Сборка мусора в Java. В общих чертах о сборке мусора.
  2. Владимир Иванов — G1 Garbage Collector. Закрепляем занания и подробно разбираемся в G1.
  3. Алексей Шипилёв — Shenandoah. Подробно рассказаны алгоритмы маркировки и копирования объектов.

Книга, которая упоминается в докладе: The Garbage Collection Handbook

Идентификатор примитив

У джунов есть какая-то любовь к примитивам, и они пытаются использовать их везде, где возможно. Но не всегда это хорошая идея. @Entity public class Like { @Id private long id; } В данном случае, когда к нам приходит новый объект, мы не сможем точно сказать, сохранен ли он в БД. Может к

У джунов есть какая-то любовь к примитивам, и они пытаются использовать их везде, где возможно. Но не всегда это хорошая идея.

@Entity
public class Like {
    
     @Id
     private long id;

}

В данном случае, когда к нам приходит новый объект, мы не сможем точно сказать, сохранен ли он в БД. Может к нам попал объек с идентификатором 0.

В случае идентификатора лучше использовать обертку, то есть Long.

Форматирование полей с аннотациями

Часто у новичков вижу подобное форматирование: public class NewReviewDto { @NotNull private Long event; @Size(max = 7000) private String review; @NotNull private Boolean positive; } Эту кашу довольно сложно читать. Если над полями класса присутствуют аннотации, то я делаю несколько переносов строк, вот так: public class NewReviewDto { @NotNull private Long event; @Size(

Часто у новичков вижу подобное форматирование:

public class NewReviewDto {
     @NotNull
     private Long event;
     @Size(max = 7000)
     private String review;
     @NotNull
     private Boolean positive;
 }

Эту кашу довольно сложно читать. Если над полями класса присутствуют аннотации, то я делаю несколько переносов строк, вот так:

public class NewReviewDto {

     @NotNull
     private Long event;
     
     @Size(max = 7000)
     private String review;
     
     @NotNull
     private Boolean positive;
     
 }

Пустая коллекция вместо Null

Если ваша программа может вернуть коллекцию, которая не содержит никаких значений, убедитесь, что возвращается пустая коллекция, а не Null. Это сэкономит вам время на различные проверки и избавит от многих ошибок. public List<Event> getAllEventByUserId(int userId) { if (userId == 0) { return Collections.emptyList(); } return eventRepository.findAllByUserId(userId); }

Если ваша программа может вернуть коллекцию, которая не содержит никаких значений, убедитесь, что возвращается пустая коллекция, а не Null. Это сэкономит вам время на различные проверки и избавит от многих ошибок.

public List<Event> getAllEventByUserId(int userId) {
    if (userId == 0) {
        return Collections.emptyList();
    }
    return eventRepository.findAllByUserId(userId);
}