CodeGym /مدونة جافا /Random-AR /الشروح. الجزء 2. لومبوك
John Squirrels
مستوى
San Francisco

الشروح. الجزء 2. لومبوك

نشرت في المجموعة
الشروح. الجزء الأول - ممل بعض الشيء في هذا الجزء، قررت أن أتطرق إلى مكتبة لومبوك، لأنها تمثل ممثلًا معروفًا لتعليقات التعليمات البرمجية المصدرية. سأتناول التعليقات التوضيحية لوقت التشغيل في المقالة التالية. الشروح.  الجزء 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 +
                '}';
    }
}
هذه الفئة عادية - تحتوي على حقلين فقط (بعد كل شيء، يوجد في بعض الأحيان أكثر من 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 أيضًا تخصيص إنشاء التعليمات البرمجية، على سبيل المثال، لا تكون هناك حاجة دائمًا إلى جميع الحروف والمحددات، أو قد تحتاج إلى خوارزمية مختلفة لإنشاء رمز التجزئة. لتحقيق ذلك، هناك تعليقات توضيحية منفصلة (أعتقد أن الكثير منها لن يحتاج إلى وصف): @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. كما ترون، فإن لومبوك تحظى بشعبية: >5000 نجمة و >1000 شوكة. يستخدم الربيع لومبوك في فصوله. إذا كان لديك Spring في مشروعك، ألقِ نظرة - ربما يكون قد جذب لومبوك دون علمك.
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION