Arkadaşlar merhaba.

Bugün Java'da clean code yazmak için çok işlevsel bir işaretten bahsedeceğim.
Lombok işareti (annotasyonu).

Lombok işareti; Java sınıflarında nesneleri Getter, Setter, Constructor, Builder gibi yapıları oluşturmayı kolaylaştırır.
Sadece sınıfı işaretleriz ve bu yapıları derleme aşamasında bizler için oluşturur.
Yüzeysel baktığımızda temiz kod yazmayı kolaylaştırır.

İlk önce normal bir sınıf oluşturalım;
Java:
public class BookDTO {

    private String id;
    private String name;
    private TopicType topicType;
    private String ISNB;
    private AuthorDTO author;
 
 
    public BookDTO(String id, String name, TopicType topicType, String iSNB, AuthorDTO author) {
        super();
        this.id = id;
        this.name = name;
        this.topicType = topicType;
        this.ISNB = iSNB;
        this.author = author;
    }
 
 
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public TopicType getTopicType() {
        return topicType;
    }
    public void setTopicType(TopicType topicType) {
        this.topicType = topicType;
    }
    public String getISNB() {
        return ISNB;
    }
    public void setISNB(String iSNB) {
        ISNB = iSNB;
    }
    public AuthorDTO getAuthor() {
        return author;
    }
    public void setAuthor(AuthorDTO author) {
        this.author = author;
    }
 
}

Gördüğünüz gibi böyle çok uzun oluyor.

Şimdi bunu Lombok ile daha kısa ve temiz yapalım;
Java:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BookDTO {

    private String id;
    private String name;
    private TopicType topicType;
    private String ISNB;
    private AuthorDTO author;
 
 
}

Gördüğünüz üzere bu şekilde işaretleyerek çok daha kısa ve temiz yaptık.


Şimdi bu işaretleri tek tek açıklayım;
Data: Sınıf içinde değişkenlerin Getter (değişkene erişim) ve Setter (değişken değeri değiştirme) metotlarını oluşturur.
Bunun yanında varsayılan olarak Java sınıflarında toString(), equals() ve hashCode() metotları mevcuttur. Data işareti,
bunlara da etki eder ve gerekli düzenlemeleri yapar.

NoArgsConstructor: Sınıf içinde parametsiz Constructer oluşturur.

AllArgsConstructor: Sınıf içindeki değişkenlerle parametreli Constructer oluşturur. Dışarıdan girilen bu parametreleri
de sınıf içindeki değişkenlere atamayı sağlayacak kodları oluşturur.

Bahsetmeye değer işaretler;
Builder: Builder tasarım kalıbını kolayca eklemeye yarar.
Getter: Tüm değişkenler için getter oluşturur.
Setter: Tüm değişkenler için setter oluşturur.
ToString: Sınıfı tanımlayan toString() metodunu oluşturur.

Kısaca bazı işaretlerinin parçalanmış şekli gibi de yazabiliriz aslında.

Bu konu yüzeysel olarak böyledir. Bu haliyle bile çok kullanışlıdır.

Topluluk tarafından tartışmalar;
Lombok bazı durumlarda patlıyor. Bu yüzden getter ve setter metotlarıya eriştiğimiz değişkenler, syntax hatası oluşturuyor.
Bu yüzden bazı geliştiriciler Lombok kullanmamızı önermiyor.
Kendim bir sorun görmedim ve birçok projede kullanıldığını gördüm.
 
Son düzenleme: