CodeGym /בלוג Java /Random-HE /הערות. חלק 2. לומבוק
John Squirrels
רָמָה
San Francisco

הערות. חלק 2. לומבוק

פורסם בקבוצה
הערות. חלק 1 - קצת משעמם בחלק זה, החלטתי לגעת בספריית Lombok, מכיוון שהיא נציגה ידועה של הערות קוד מקור. אתייחס להערות בזמן ריצה במאמר הבא. הערות.  חלק 2. לומבוק - 1פעם, היה מתכנת ג'אווה. כל יום היא כתבה קוד רגיל, למשל, כך:
package lombok;

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Person() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Person person = (Person) o;

        if (age != person.age) return false;
        return name != null ? name.equals(person.name) : person.name == null;
    }

    @Override
    public int hashCode() {
        int result = name != null ? name.hashCode() : 0;
        result = 31 * result + age;
        return result;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
מחלקה זו היא רגילה - רק 2 שדות (אחרי הכל, לפעמים יש יותר מ-10-15 שדות). כמובן, כל זה יכול להיווצר ב-IDE. אבל לעזאזל, זה תופס את מקומו. אם יש 15-20 שדות, כל אחד מהם זקוק לגטרים, מגדירים, קונסטרוקטורים... בין כל אלה, כמה שיטות אחרות, בלתי נראות לעין, עלולות ללכת בקלות לאיבוד. איך נעזור למתכנת הזה לכתוב מהר יותר ופחות? לומבוק. מהמחבת ואל האש איתך. הנה אותה מחלקה, אבל עכשיו אנחנו משתמשים בלומבוק:
package lombok;

@Data
public class Person {
    private String name;
    private int age;
}
זה הכל. מגניב הא? מה עושה הערת @Data ? במהלך הקומפילציה, הערה זו מייצרת מגדירים/מגדירים עבור כל השדות, ומעקפת את toString(), equals() ו-hashCode() בהתאם לכללים סטנדרטיים. אתה יכול להתקין את התוסף ב-IDE. זה יראה את כל השיטות שעדיין לא נוצרו. הערות.  חלק 2. לומבוק - 2בשלב זה, אני מקווה שאתה, הקורא שלי, התעניינת, כי מה להלן יהיה הקדמה קצרה עם קישורים לפרטים. Lombok גם מאפשרת לך להתאים אישית את יצירת הקוד, למשל, לא תמיד יש צורך בכל ה-Gutters ו-seters, או שאולי תצטרך אלגוריתם אחר כדי ליצור קוד Hash. כדי להשיג זאת, יש הערות נפרדות (אני חושב שרבות מהן לא יצטרכו תיאור): @Getter/@Setter, @ToString, @EqualsAndHashCode, @NoArgsConstructor, @RequiredArgsConstructor, ו-@AllArgsConstructor, @Log אלו הם הכי הרבה מְשׁוּתָף. את הסט כולו ניתן לראות כאן . שימו לב במיוחד ל-var ו-val. זה אומר שאתה יכול לכתוב קוד כך:
package lombok;

import lombok.experimental.var;

@Data
public class Person {
    private String name;
    private int age;

    public static void main(String[] args) {
        var person = new Person();
        person.setAge(22);
        System.out.println(person);
    }
}
למה זה נחוץ? לדוגמה, יש לנו מחלקה RandomAccessFileChannel. למה שנרצה לכתוב קוד כזה?
RandomAccessFileChannel channel = new RandomAccessFileChannel();
אם אנחנו יכולים לעשות את זה?
var channel2 = new RandomAccessFileChannel();
לדעתי זה לא תמיד מקובל. לדוגמה, יש לנו שיטה רעה שמחזירה מפה רעה:
public static Map<List<Set<Integer>>, Set<List<String>>> evilMap() {
    return new HashMap<>();
}
אם אתה קורא לזה ככה:
Map<List<Set<Integer>>, Set<List<String>>> listSetMap = evilMap();
ואז פחות או יותר ברור עם מה אנחנו עובדים. אם השיחה היא כזו:
var listSetMap = evilMap();
אז רק השטן יודע מה evilMap() יחזיר לשם, ועד שלא מסתכלים על השיטה עצמה, אינך יודע. למה להתרוצץ בין קבצי המקור? באופן כללי, אתה צריך להיות זהיר עם זה. ענף ניסיוני: כאן אני רוצה להזכיר את ההערה @UtilityClass . זה יוצר בנאי פרטי שזורק חריג (אז ידיים קטנות ומלוכלכות לא משתמשות בהשתקפות כדי להתערב שם). וזה מאוד יפה בתחילת השיעור - זה אומר לנו שיש שיטות שירות. ההערה @Delegate מיישמת את דפוס ההאצלה. נניח שיש לך מחלקה שמאצילה משהו למחלקה אחרת, ואתה מבצע שינויים רק בחלק מהשיטות - ההערה הזו תחסוך ממך שכפול שיטות והוא יעקוב אחריהם. אם תסיר או תוסיף שיטה, הערה זו תבחין. ענף הערות ניסוי GitHub האתר הרשמי על מנת שה-IDE יעבוד כמו שצריך עם lombok ולא ידגיש שיטות כלא קיימות, עליך להתקין את התוסף. באתר הרשמי יש קטע הגדרות שבו אתה יכול לראות כיצד לחבר את התוסף עבור כל IDE. כפי שאתה יכול לראות, Lombok פופולרי:>5,000 כוכבים ו>1,000 מזלגות. האביב משתמש בלומבוק בכיתותיו. אם יש לך אביב בפרויקט שלך, תסתכל - ייתכן שהוא משך את לומבוק ללא ידיעתך.
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION