JavaRush /مدونة جافا /Random-AR /الشروح. الجزء الثاني. لومبوك

الشروح. الجزء الثاني. لومبوك

نشرت في المجموعة
الشروح. الجزء الأول، ممل بعض الشيء في هذا الجزء، قررت أن أتطرق إلى مكتبة لومبوك كممثل معروف لشروح المصدر. مع التعليقات التوضيحية لوقت التشغيل في المقالة التالية. ذات مرة كان هناك مبرمج جافا، كل يوم كان يكتب كودًا عاديًا، على سبيل المثال هذا:
package lombok;

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

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

    public Chelovek() {
    }

    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;

        Chelovek chelovek = (Chelovek) o;

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

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

    @Override
    public String toString() {
        return "Chelovek{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
هذه فئة نموذجية تحتوي على حقلين فقط (لكن في بعض الأحيان يوجد أكثر من 10-15 حقلاً). نعم، بالطبع، كل هذا يمكن إنشاؤه في IDE، ولكن اللعنة، فإنه يأخذ مساحة. إذا كان هناك 15-20 حقلاً، فكلهم بحاجة إلى حروف، ومحددات، ومنشئات... ومن بين كل هذا، يمكن بسهولة أن تضيع طريقتان أخريان غير مرئية للعين. كيف يمكنني مساعدة مثل هذا المبرمج على الكتابة بشكل أسرع وأقل؟ لومبوك. مباشرة في الحرارة، نفس الفئة ولكن باستخدام لومبوك:
package lombok;

@Data
public class Chelovek {
    private String name;
    private int age;
}
أجل هذا كل شئ. رائع؟ ماذا سيفعل التعليق التوضيحيData ؟ في مرحلة التجميع، سيتم إنشاء حروف/محددات لجميع الحقول، إلى سلسلة وإعادة تعريف يساوي ورمز التجزئة وفقًا للمعايير. يمكنك تثبيت مكون إضافي في IDE وسيرى جميع الطرق التي لم يتم إنشاؤها بعد.
الشروح.  الجزء الثاني.  لومبوك - 1
أتمنى أن تكون أيها القارئ قد وجدت الأمر مثيرًا للاهتمام، لأن ما يلي هو مقدمة قصيرة وروابط للتفاصيل. يوفر Lombok أيضًا الفرصة لتخصيص الإنشاء؛ لا يلزم دائمًا إنشاء جميع الحروف أو أدوات التحديد أو رموز التجزئة بشكل مختلف. لذلك، هناك تعليقات توضيحية منفصلة (أعتقد أن الكثير منها لا يحتاج إلى وصف) @Getter/@Setter @ToString @EqualsAndHashCode @NoArgsConstructor، @RequiredArgsConstructor و @AllArgsConstructor @Log هذه هي الأكثر شيوعًا، ويمكن عرض المجموعة بأكملها هنا var و val يستحقان اهتمامًا خاصًا. من الممكن الكتابة هكذا:
package lombok;

import lombok.experimental.var;

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

    public static void main(String[] args) {
        var chelovek = new Chelovek();
        chelovek.setAge(22);
        System.out.println(chelovek);
    }
}
لماذا هذا ضروري؟ على سبيل المثال، لدينا فئة 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 تحظى بشعبية كبيرة. > 5000 نجمة و > 1000 شوكة. تستخدم الربيع لومبوك في فصولها الدراسية. إذا كان لديك زنبرك في مشروعك، فابحث عنه، فربما يكون قد سحب اللومبوك، فأنت لا تعرف.
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION