Mariusz Prowaźnik

o programowaniu w Javie, Scali i Clojure.


Project Lombok - skróć kod o 90%

Ten post jest o pomysłowym i bardzo prostym narzędziu, które pozwala uporać się z jedną z javovych niedogodności.

Załóżmy, że potrzebujesz klasy Punkt, z dwoma polami typu double. Aby było zgodnie z dobrymi praktykami programowania, pola będą miały dostęp prywatny, wygenerujesz gettery i settery, konstruktor, toString, equals i hashCode, przez co kod klasy urośnie do rozmiaru 965 znaków:
public class Punkt {
 private final double x;
 private final double y;

 public Punkt(double x, double y) {
  super();
  this.x = x;
  this.y = y;
 }

 @Override
 public String toString() {
  return "Punkt [x=" + x + ", y=" + y + "]";
 }

 @Override
 public int hashCode() {
  final int prime = 31;
  int result = 1;
  long temp;
  temp = Double.doubleToLongBits(x);
  result = prime * result + (int) (temp ^ (temp >>> 32));
  temp = Double.doubleToLongBits(y);
  result = prime * result + (int) (temp ^ (temp >>> 32));
  return result;
 }

 @Override
 public boolean equals(Object obj) {
  if (this == obj)
   return true;
  if (obj == null)
   return false;
  if (getClass() != obj.getClass())
   return false;
  Punkt other = (Punkt) obj;
  if (Double.doubleToLongBits(x) != Double.doubleToLongBits(other.x))
   return false;
  if (Double.doubleToLongBits(y) != Double.doubleToLongBits(other.y))
   return false;
  return true;
 }

 public double getX() {
  return x;
 }

 public double getY() {
  return y;
 }
Co prawda kod ten generuje IDE, ale czy nie wolałbyś, żeby klasa Punkt wyglądała na przykład tak:
import lombok.Data;
public @Data class Punkt {
 private final double x;
 private final double y;
}
To 94 znaków zamiast 965. Jak dla mnie pomysł świetny. Na stronie http://projectlombok.org/ jest 3 minutowy filmik, po obejrzeniu którego nie będzie problemu z użyciem we własnym projekcie.

Brak komentarzy :

Prześlij komentarz