Project Lombok vs. Eclipse Templates / Code Generation
-
26-09-2019 - |
سؤال
يفعل مشروع لومبوك تقديم أي فائدة مقارنة بقوالب التعليمات البرمجية / توليد الرمز في Eclipse؟ هل هناك أي جوانب سلبية (بصرف النظر عن بما في ذلك .jar)؟
المحلول
تتمثل إحدى ميزة Lombok في أنه بمجرد شرح فصل دراسي مع تعليق @Data ، لا تحتاج أبدًا إلى تجديد الكود عند إجراء تغييرات. على سبيل المثال ، إذا قمت بإضافة حقل جديد ، فسيقوم Data تلقائيًا بتضمين هذا الحقل في أساليب المساواة ، و Hashcode و ToString. ستحتاج إلى إجراء هذا التغيير يدويًا عند استخدام أساليب Eclipse التي تم إنشاؤها. في بعض الوقت ، قد تفضل التحكم اليدوي ولكن بالنسبة لمعظم الحالات ، لا أتوقع.
نصائح أخرى
ميزة Lombok هي أن الكود ليس موجودًا بالفعل - أي فصول أكثر قابلية للقراءة ولا تشوش.
مزايا:
- سهل الاستخدام للغاية
الفصول الدراسية أكثر نظافة ("لا يوجد رمز غلاية") ، وخاصة "الفصول الداخلية التي تشبه البنية" تتقلص إلى الحد الأدنى: العارية:
@Data private class AttrValue { private String attribute; private MyType value; }
سيؤدي ذلك إلى إنشاء كل من getters و setters ، و tostring () ، والتجزئة الصحيحة () / equals () بما في ذلك كلا المتغيرين. البديل مع
@Value
يخلق بنية غير قابلة للتغيير (لا يوجد مستودعات ، جميع الحقول النهائية).- لا حاجة لإنشاء/إزالة التعليمات البرمجية عند تغيير الحقول (getters ، المستقدون ، tostring ، التجزئة ، متساوية)
- لا يوجد تداخل مع الأساليب المشفرة يدويًا: فقط أضفك تملك جهازًا محددًا إلى الفصل عند الحاجة. يتخطى لومبوك هذا ويولد كل شيء آخر
سلبيات:
- لا يوجد اسم إعادة إنشاء ، حتى الآن: إعادة تسمية
value
أعلاه لن (بعد) إعادة تسميةgetValue()
وsetValue()
- قد يبطئ Ecplise قليلاً
toString
الإخراج ليس لطيفًا مثل ، على سبيل المثال ، TostringBuilder من Apache Commons
قلة قليلة تتبادر إلى الذهن:
- يعتمد على التعليق التوضيحي ، لذلك لا يوجد شيء جيد للمشروع القديم الذي لا يزال في ما قبل java5 (Delombok استطيع المساعدة). في الواقع ، يتطلب استخدام برنامج التحويل البرمجي Javac V1.6.
- لا يزال لديه قيود بخصوص العديد من البنائين
لا ينبغي التغاضي عن مشكلة التبعية ، لكنك استبعدتها من سؤالك.
تقدم Eclipse EMF بعض الميزات التي لا تدعمها Lombock بعد:
- ميكانيكي الإخطار القويون للحصول على إبلاغ بالتغييرات في مثيلاتك
- API عام دون انعكاس Java. الوصول وتعديل الحالات دون إشارة قوية إلى النوع
- Command Und API التحرير
- المراجع المتقاطعة بين النماذج: قم بإنشاء وتحميل أشجار النماذج و EMF يتولى التحميل عن طريق إنشاء وكيل للمرجع المتقاطع. هذا يحفظ الذاكرة وزيادة الأداء في أشجار المجال الضخمة
- وأكثر بكثير...