Farzad Afi Logo

FarzadAfi

آموزش تخصصی برنامه نویسی

Project Lombok | لوم بوک

📖توضیحات درس

🎥 این ویدیو قسمت چهل و یکم از بوت‌کمپ رایگان جاواست. 📚 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 هر سوالی داشتی، می‌تونی داخل گروه بپرسی؛ من یا مربی‌های گروه همراهت هستیم 🌱 🎯 بوت‌کمپ رایگان جاوا – آموزش پروژه‌محور برای یادگیری عمیق و ورود به بازار کار
00:27:52🎯رایگان

📄جزوه

مفاهیم کلیدی

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

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

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

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

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

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

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

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

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

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

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

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

نمونه کد:

@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 بالای آن فیلد استفاده کنید.

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

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

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