נעים להכיר-Lombok
-
נעים להכיר-Lombok
ל-Lombok נחשפתי לפני כשנתיים, ולמרות שבתחילה התייחסתי אליו בחשדנות מה היום אני מוסיפה אותו אוטומטית כמעט לכל פרויקט חדש. מי זה Lombok? אומרים שתמונה אחת שווה יותר מ1000 מילים, אז בסגנון ה”לפני-אחרי” האהוב: נאלצתי להקטין את התמונות כדי שייכנסו בגודל סביר, אבל ההבדל ברור: משמאל יש את המחלקה-ישות- ToDo שממשת getters ו-setters והיא כתובה בpure Java ללא שימוש ב Lombok, לעומתה מצד ימין יש אותה מחלקה בדיוק רק עם אנוטציה אחת של Lombok- @Data, והתוצאה היא חיסכון של קרוב ל-20 שורות קוד מהמחלקה המקורית!! (ובמחלקות גדולות יותר ההפרש יכול להגיע לעשרות רבות של שורות קוד..) וLombok היא ספריית גאווה שנועדה להפחית את כמות הקוד בפרוייקט ע”י שימוש באנוטציות. המטרה היא להוריד את כמות ה- “boilerplate code-קוד שחור שחוזר על עצמו”- שמפתחים נאלצים לכתוב בגלל התחביר של ג’אווה, לדוג’: getters, setters, toString, equals ועוד. דוגמאות? בבקשה: 1. אנוטציה ל-Get ו-Set במקום לכתוב את 2 המתודות לכל Property: 2. מתודה ToString, שימו לב לפרמטרים שניתן להעביר על מנת לחולל את המתודה בצורה הרצויה: 3. ואחד פשוט וכ”כ שימושי- במקום ליצור לכל מחלקה משתנה logger, אפשר לשים-Log@: הlogger שייוצר הוא מספריית הלוגים של ג’אווה: java.util.logging.Logger, אבל יש אנוטציות תואמות גם עבור Log4j, Slf4j, Apache CommonsLog ועוד. 4. דוגמה אחרונה ובאמת חביבה כי היא חוסכת הרבה מאוד קוד למי שמשתמש בDesign Pattern של Builder: כמו קסם, אנוטציה אחת ויש Builder מוכן לשימוש! J יש עוד הרבה אנוטציות שכדאי לראות(constructors ועוד) ואפשר למצוא אותן כאן: https://projectlombok.org/features/all איך זה עובד? עוד לפני שלב הבדיקה בקומפלציה ה-Plugin של Lombok סורק את האנוטציות ומחולל קוד זהה(Java Bytecode) לתוך קובץ .class, כך שאין התערבות או השפעה על ה-runtime של האפליקציה אלא על זמן ההידור בלבד. בנוסף, יש אפשרות לעשות לקוד delombok ולראות את הקוד שחולל מאחורי הקלעים. הפרויקט Lombok הוא כמובן OpenSource, נתמך ע”י קהילת המפתחים וכל הזמן נוספות לו עוד אנוטציות חדשות. שווה להיכנס לאתר- להתקין, להשתמש ולהתעדכן בחידושים. אם השתכנעתן לנסות- שתפו בתוצאות :)) ! האתר הרשמי לתיעוד, התקנה, גרסאות ועוד: https://projectlombok.org/ מקורות: https://www.oodlestechnologies.com/blogs/What-is-Lombok-in-java/ https://projectlombok.org/features/all
Log in to reply.