Lombok w Androidzie

W poprzednim wpisie przedstawiłem w jaki sposób można ograniczyć pisanie kodu który i tak jest wymagany. Natomiast ten wpis będzie kontynuacją rozpoczętego tematu związanego z boilerplate. Jeżeli tworzymy klasę a w niej metody gettery, settery, toString itp to tworzy nam się znowu dużo kodu który pogarsza nam czytelność kodu. Projekt Lombok to nic innego jak odpowiedz na „problemy” związane z generowaniem tego typu metod i pół z których i tak korzystamy.

1. Lombok

Lombok to biblioteka która za pomocą adnotacji umożliwia nam generowanie automatycznie tego typu kodu. Biblioteka udostępnia zbiór adnotacji za pomocą których możemy generować kłopotliwe boileplate code. Listę adnotacji znajdziesz tutaj. Jak działa Lombok? Kod który jest wymagany jest dopisywany w czasie kompilacji. Dlatego kompilator Javy „widzi” normalny kod który ręcznie byśmy napisali. Dodatkowo biblioteka honoruje nasze nadpisane metody i nie powoduje to konfliktów. Warto też wspomnieć, ze nie tracimy wydajności ponieważ biblioteka działa tylko w czasie kompilacji i nie jest wymagana w aplikacji.

2. Lombok w Androidzie

Aby zainstalować bibliotekę w Android Studio musimy wykonać dwa kroki:

  1. Dodać wpis do gradle:
    dependencies {
        compileOnly "org.projectlombok:lombok:1.16.18"
    }
  2. Zainstalować plugin Lombok Plugin – w tym celu wchodzimy w File > Settings > Plugins > Browse repositories i szukamy Lombok Plugin instalujemy i restartujemy AS.

3. Korzystanie z Lombok

Przykładowa standardowa klasa wyglądała by tak:

public class Product {
    private String namee;
    private Double price;
    public Product(String namee, Double price) {
        this.namee = namee;
        this.price = price;
    }
    public String getNamee() {
        return namee;
    }
    public void setNamee(String namee) {
        this.namee = namee;
    }
    public Double getPrice() {
        return price;
    }
    public void setPrice(Double price) {
        this.price = price;
    }
}

Teraz skorzystajmy z pomocy biblioteki i zmodyfikujmy naszą klasę na taką postać:

import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Product {
    private String namee;
    private Double price;
    public Product(String namee, Double price) {
        this.namee = namee;
        this.price = price;
    }
}

Jest różnica? Jest i to spora zaoszczędziliśmy ~ 10 linijek, a to tylko dwa pola… W innej klasie już standardowo się odnosimy:

Product product = new Product("Orange",2.5);
product.getNamee();
product.getPrice();

4. Adnotacje

Podam tutaj tylko kilka adnotacji które mogą sie przydać:

  • @Getter / @Setter – generuje metody getter() i setter() – UWAGA jeżeli chcesz dla całej klasy wygenerować te metody to wstaw tą adnotacje tak jak w przykładzie. Natomiast jeśli chcesz generować metody tylko dla poszczególnych pól to przed nimi wstaw adnotację
  • @EqualsAndHashCode – generuje jednocześnie metody equals() i HashCode()
  • @ToString – generuje metodę toString()
  • @RequiredArgsConstructor / @AllArgsConstructor / @NoArgsConstructor – generuje konstruktor który przyjmuje jako argumenty odpowiednio: pola (prywatne i finalne), wszystkie pola, nie przejmuje żadnych argumentów.
  • @Data – generuje wszystkie jednocześnie metody wymienione wyżej
  • i wiele wiele innych.

5. Podsumowanie

Lombok jest biblioteką, która bardzo ułatwia i przyspiesza tworzenie aplikacji na system android. Warto też zapoznać się dokumentacją tej biblioteki i korzystać z niej gdy wymaga tego projekt.

Co dalej?

  • Polub stronę MYENV na Facebooku oraz śledź mnie na Twitterze
  • Zachęcam do komentowania i pisania propozycji tematów, o których chcesz przeczytać
  • Poleć ten wpis za pomocą poniższych przycisków. Będę Ci za to bardzo wdzięczny 🙂
  • Życzę Ci miłego dnia i miłego kodowania 🙂