جلسه شماره 41رایگان

Project Lombok | لوم بوک

00:27:52

توضیحات جلسه

🎥 این ویدیو قسمت چهل و یکم از بوت‌کمپ رایگان جاواست. 📚 Project Lombok – آشنایی کامل با کتابخانه Lombok در جاوا در این جلسه با یکی از کتابخانه‌های محبوب و بسیار کاربردی در اکوسیستم جاوا آشنا می‌شویم: Lombok. هدف اصلی Lombok کاهش کدنویسی تکراری (Boilerplate Code) و ساده‌تر کردن ساختار کلاس‌هاست. با استفاده از مجموعه‌ای از Annotationها می‌توان کدهای تمیزتر، کوتاه‌تر و قابل نگهداری‌تری نوشت. در این ویدیو بررسی می‌کنیم: - Lombok چیست و چرا در پروژه‌های جاوا بسیار استفاده می‌شود - نحوه راه‌اندازی و تنظیمات اولیه Lombok در پروژه - استفاده از Annotationهای پرکاربرد مانند @Getter و @Setter - بررسی @ToString و @EqualsAndHashCode - آشنایی با Annotationهای مربوط به Constructor - معرفی Annotation قدرتمند @Data - قابلیت Delombok برای مشاهده کد واقعی تولیدشده - مرور سایر Annotationهای کاربردی Lombok و نکات مهم 💬 گروه پرسش و پاسخ تلگرام: @programmingByFarzadAfi 💬 گروه پرسش و پاسخ بله: @programming_by_farzadafi هر سوالی داشتی، می‌تونی داخل گروه بپرسی؛ من یا مربی‌های گروه همراهت هستیم 🌱 🎯 بوت‌کمپ رایگان جاوا – آموزش پروژه‌محور برای یادگیری عمیق و ورود به بازار کار

جزوه و مستندات

مفاهیم کلیدی

Boilerplate Code (کدهای بویلرپلیت)

کدهایی که برای پیاده‌سازی ساختار کلاس ضروری هستند اما منطق تجاری خاصی ندارند و بارها تکرار می‌شوند؛ مانند متدهای Getter، Setter، سازنده‌ها و متد toString.

Annotation (انوتیشن)

برچسب‌هایی که با علامت @ شروع می‌شوند و به Lombok دستور می‌دهند که در زمان کامپایل، کدهای خاصی را به‌صورت خودکار تولید کند.

Bytecode (بایت‌کد)

کدی که پس از کامپایل فایل‌های .java تولید شده و در فایل‌های .class قرار می‌گیرد. Lombok کدهای تولید شده را مستقیماً در این سطح تزریق می‌کند.

Delombok (دی‌لومبوک)

فرآیندی که در آن انوتیشن‌های Lombok حذف شده و کدهای معادل Java (که توسط Lombok تولید شده بودند) به‌صورت متنی جایگزین می‌شوند تا کد به حالت استاندارد بازگردد.

نکات مهم مصاحبه‌ای

Project Lombok چیست و چه هدفی دارد؟

یک کتابخانه Java است که با استفاده از انوتیشن‌ها، حجم کدهای تکراری را کاهش داده و باعث می‌شود برنامه‌نویس به‌جای نوشتن کدهای روتین، بر روی منطق اصلی برنامه تمرکز کند.

تفاوت عملکرد لومبوک با قابلیت Generate در IDE چیست؟

IDE کدها را در فایل سورس (Source Code) تولید می‌کند که باعث شلوغی کلاس می‌شود، اما Lombok کدها را در زمان کامپایل به Bytecode اضافه می‌کند؛ بنابراین سورس‌کد تمیز باقی می‌ماند اما متدها در زمان اجرا در دسترس هستند.

انوتیشن @Data شامل چه مواردی است؟

این یک انوتیشن ترکیبی است که معادل استفاده هم‌زمان از @Getter، @Setter، @ToString، @EqualsAndHashCode و @RequiredArgsConstructor می‌باشد.

چرا برای استفاده از لومبوک به نصب پلاگین در IDE نیاز داریم؟

از آنجا که متدها در سورس‌کد وجود ندارند و در زمان کامپایل ساخته می‌شوند، بدون پلاگین، IDE نمی‌تواند متدهایی مثل getName() را شناسایی کند و خطای قرمز نمایش می‌دهد.

مثال یا سناریوی کاربردی

فرض کنید کلاسی به نام Book داریم. بدون Lombok باید ده‌ها خط کد برای فیلدها بنویسیم. با Lombok مراحل به‌این صورت خلاصه می‌شود:

۱. تعریف فیلدها: متغیرهای کلاس (مانند id و title) را تعریف می‌کنیم. ۲. افزودن انوتیشن‌ها: به‌جای نوشتن متدها، انوتیشن‌های لازم را بالای کلاس قرار می‌دهیم. ۳. استفاده: در کلاس اصلی، به‌راحتی از متدهای تولید شده استفاده می‌کنیم.

نمونه کد:

@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Book {
    private Long id;
    private String title;
    private String author;
}

// نحوه استفاده در کد
Book myBook = new Book(1L, "Clean Code", "Robert C. Martin");
System.out.println(myBook.getTitle()); // استفاده از گتر تولید شده
System.out.println(myBook); // استفاده از تو-استرینگ تولید شده

بیشتر بدانید

Exclusion در ToString

اگر نمی‌خواهید فیلد خاصی (مثل رمز عبور یا ID) در متد toString نمایش داده شود، می‌توانید از @ToString.Exclude بالای آن فیلد استفاده کنید.

محدود کردن دامنه

Lombok را می‌توان به‌جای کل کلاس، فقط بالای یک فیلد خاص استفاده کرد تا فقط برای همان فیلد Getter یا Setter ساخته شود.

Refactor

با راست‌کلیک روی انوتیشن و انتخاب Refactor -> Lombok -> Delombok می‌توانید کد تولید شده توسط Lombok را مشاهده و به کد استاندارد تبدیل کنید.

نکته نسخه جاوا

در نسخه‌های جدید Java (۱۷ به بعد)، برای کلاس‌های داده‌ای ساده (Data Carrier)، استفاده از Record نسبت به انوتیشن @Value در Lombok اولویت دارد.