یک کتابخانه جالب و کاربردی، 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های دیگری نیز در این کتابخانه تعریف شده است که میتوانند بسیار مفید باشند.
دیگر بدون هیچ نگرانی از NullPointerException لذت ببرید چون با این annotation به طور خودکار کد بررسی null برای یک پارامتر تابع یا constructor اضافه میشود. | |
مدیریت خودکار منابع قبل از خروج از محدوده جاری | |
دیگر هیچ وقت public int getFoo(){return foo;}i را ننویسید. | |
دیگر نیازی به دیباگ کردن برای دیدن فیلدها ندارید. تنها از lombok بخواهید toString برایتان تولید کند. | |
تساوی ساده میشود. hashcode و equals از فیلدهای شی مورد نظر تولید میشود | |
@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor |
برای انواع constructor کافی است دستور دهید. |
همه مایحتاج یک کلاس دادهای را یک جا داشته باشید. | |
کلاسهای Immutable هم ساده شده اند. | |
یک API بسیار ساده برای ساخت اشیا | |
checked exception را بدون آنکه در قسمت throws تعریف کنید پرتاب نمایید! | |
synchronized به درستی انجام شده است. لازم نیست قفلهای خود را افشا کنید. | |
تنبلی یک حُسن است! | |
فقط بگویید چه چیزی را میخواهید ثبت کنید. |
اما نحوه استفاده از این کتابخانه دوست داشتنی چیست؟
- از اینجا دانلود کنید.
- با باز کردن آن و مشخص کردن مسیر 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ها مشاهده نمایید.
❗️هشدار: استفاده از این کتابخانه شدیدا اعتیادآور است. مواظب باشید 🙂