دانستنی‌ها

یک کتابخانه جالب و کاربردی، Lombok

در مطالب گذشته به کتابخانه Lombok اشاره‌های گذرایی شده است. به عنوان مثال جز صد کتابخانه برتر سال ۲۰۱۶ معرفی گردید. اما اگر هنوز کسی هست که از شگفتی‌های این کتابخانه بی اطلاع است، این مطلب را از دست ندهد.

کلاس زیر را در نظر بگیرید.

public class Mountain {

    private final String name;
    private final double latitude, longitude;
    private String country;

}

یک کلاس داده‌ای است که لازم است حداقل یک constructor و چند getter/setter به آن اضافه شود. اگر شما هم مثل اغلب برنامه‌نویسان از انجام کارهای تکراری بیزار باشید، از نوشتن این کدهای تکراری و زیاد برای هر کلاس داده‌ای به ستوه آمده اید.

حتما الان نیشخندی می‌زنید که این مساله را مدت‌هاست به کمک IDEها حل کرده اید و مثلا در اکلیپس کافی است با انتخاب فیلدها و راست کلیک و انتخاب گزینه source و بعد generate getter/setter… یا generate constructor using fields… با نرخ باورنکردنی ۱۰۰ خط در ثانیه کدنویسی کنید و یک کلاس پر از توابع داشته باشید. (اگر تاکنون این مساله را جلوی رئیستان امتحان نکرده‌اید انجام دهید و از نتیجه آن لذت ببرید 🙂 ) فیلم نمونه در کانال تلگرام

اما واقعا این کلاس ساده پر از توابع چندان چیز خوبی نیست. وقتی مجددا به این کلاس مراجعه کنید تشخیص اینکه آیا این کلاس یک کلاس داده‌ای ساده است یا خیر کار راحتی نخواهد بود.

در این جا کتابخانه Lombok بسیار راهگشا خواهد بود. کافی است این کتابخانه را به پروژه خود اضافه کنید و تنها با یک annotation مشابه زیر از شر کدهای تکراری راحت شوید.

import lombok.Data;

public @Data class Mountain {

    private final String name;
    private final double latitude, longitude;
    private String country;

}

اگر به Outline پروژه خود قبل و بعد از اضافه کردن این annotation دقت کنید متوجه می‌شوید که با این annotation به طور خودکار توابع مورد نیاز یک کلاس داده‌ای اضافه می‌گردد بدون این که کلاس با کدهای تکراری شلوغ شود.

این قابلیت تنها مربوط به IDE ها هم نیست و اگر کلاس‌های جاوای خود را در command line هم کامپایل و اجرا کنید این توابع که به طور خودکار اضافه شده‌اند به خوبی شناسایی شده و قابل استفاده اند.

این تنها یک قابلیت از کتابخانه Lombok بود annotationهای دیگری نیز در این کتابخانه تعریف شده است که می‌توانند بسیار مفید باشند.

@NotNull

دیگر بدون هیچ نگرانی از NullPointerException لذت ببرید چون با این annotation به طور خودکار کد بررسی null برای یک پارامتر تابع یا constructor اضافه میشود.

@Cleanup

مدیریت خودکار منابع قبل از خروج از محدوده جاری

@Getter/@Setter

دیگر هیچ وقت public int getFoo(){return foo;}i را ننویسید.

@ToString

دیگر نیازی به دیباگ کردن برای دیدن فیلدها ندارید. تنها از lombok بخواهید toString برایتان تولید کند.

@EqualsAndHashCode

تساوی ساده میشود. hashcode و equals از فیلدهای شی مورد نظر تولید میشود

@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor

برای انواع constructor کافی است دستور دهید.

@Data

همه مایحتاج یک کلاس داده‌ای را یک جا داشته باشید.

@Value

کلاسهای Immutable هم ساده شده اند.

@Builder

یک API بسیار ساده برای ساخت اشیا

@SneakyThrows

checked exception را بدون آنکه در قسمت throws تعریف کنید پرتاب نمایید!

@Synchronized

synchronized به درستی انجام شده است. لازم نیست قفلهای خود را افشا کنید.

@Getter(lazy=true)

تنبلی یک حُسن است!

@Log

فقط بگویید چه چیزی را میخواهید ثبت کنید.

 اما نحوه استفاده از این کتابخانه دوست داشتنی چیست؟

  • از اینجا دانلود کنید.
  • با باز کردن آن و مشخص کردن مسیر IDE به IDE خود اضافه کنید.
  • فایل jar آن را به طور دستی به کتابخانه‌های پروژه اضافه کرده یا به شکل زیر در فایل pom قرار دهید.
<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.18</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

حالا از قابلیت‌های آن لذت ببرید.

جزییات دیگر از نحوه نصب را هم از سایت خود این کتابخانه به راحتی می‌توانید پیدا کنید.

فیلم نصب و آموزش استفاده از کتابخانه در کانال تلگرام موجود است.

ضمنا اگر به هر دلیل نخواهید پروژه شما دیگر به این کتابخانه وابستگی داشته باشد می‌توانید به سادگی  از Delombok استفاده کرده و طبق گذشته کدهای معمول را در قبال رفتن annotationها مشاهده نمایید.

❗️هشدار: استفاده از این کتابخانه شدیدا اعتیادآور است. مواظب باشید 🙂

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا