مرحبًا بالجميع في مجتمع CodeGym! اليوم دعونا نتحدث عن تصحيح الأخطاء - ما هو وكيفية تصحيح الأخطاء في IntelliJ IDEA. هذه المقالة مخصصة للأشخاص الذين لديهم بالفعل الحد الأدنى من المعرفة بـ Java Core. لن يكون هناك أي أطر أو إجراءات معقدة لنشر المكتبات. نزهة ممتعة. لذا اجعل نفسك مرتاحًا ودعنا نبدأ!
التوثيق README، والذي يمكن العثور عليه في الدليل الجذري للمشروع، فإن السلوك المتوقع لجميع الزهور التي يتم جمع الرحيق منها هو أن تكون كمية العسل المجمعة (التي تأخذ شكل مضاعفة ) مساوية للنصف الرحيق المتجمع. يحتوي المشروع على الفئات التالية:
الخاص بالوثائق ، يتم تحويل الرحيق إلى عسل بنسبة 2 إلى 1:
الخاص بالوثائق يحتوي على خطأ ويجب تحديثه. لنقم بتحديث ملف README:
Stack Overflow CodeGym :)
لماذا تحتاج إلى وضع التصحيح
دعونا نوضح شيئًا لأنفسنا على الفور: لا يوجد رمز بدون أخطاء... هذه هي الطريقة التي تعمل بها الحياة. لذلك، لا ينبغي لنا أن ننهار ونستسلم إذا لم يعمل الكود الخاص بنا كما توقعنا. ولكن ماذا يجب أن نفعل؟ حسنًا، يمكننا وضعSystem.out.println
البيانات في كل مكان ومن ثم البحث في مخرجات وحدة التحكم على أمل العثور على خطأ. ومع ذلك، يمكنك (والناس يفعلون ذلك) تصحيح الأخطاء باستخدام التسجيل الدقيق. ولكن إذا كان بإمكانك تشغيل التعليمات البرمجية الخاصة بك على جهاز محلي، فمن الأفضل استخدام وضع التصحيح . أريد أن أشير على الفور إلى أننا سننظر في هذه المقالة في تصحيح أخطاء المشروع باستخدام IntelliJ IDEA.
ما هو وضع التصحيح؟
وضع التصحيح مخصص لتصحيح (فحص) التعليمات البرمجية قيد التشغيل. يتيح لك إيقاف التنفيذ في الأماكن المخصصة والنظر في كيفية سير الأمور. يتيح لك فهم حالة البرنامج في مكان معين في الكود. إنه مثل القدرة على إيقاف الساعة والنظر إلى كل شيء من الجانب. رائع، أليس كذلك؟ هدفنا هو أن نتعلم بسرعة وسهولة كيفية تصحيح أخطاء التطبيقات باستخدام بيئة تطوير IntelliJ IDEA المحبوبة لدينا.ما تحتاجه لبدء التصحيح
إليك بعض النصائح المجانية: أثناء قراءة هذه المقالة، افعل كل ما سيتم وصفه هنا - لديك كل ما تحتاج إلى متابعته. ماذا تحتاج:- إصدار IntelliJ IDEA 2019.3.1 أو أعلى. وفي حالة عدم وجود هذا لدى شخص ما، فإليك الرابط حيث يمكنك تنزيله . قم بتنزيل إصدار المجتمع — هذا هو الإصدار الذي سأستخدمه.
- انسخ مشروع GitHub هذا واستورده من خلال IDEA.
مجرد القليل من النظرية...أعدك :D
لبدء تصحيح الأخطاء ولو قليلاً، عليك أن تفهم ما هي نقطة التوقف وأن تكون على دراية ببعض المفاتيح السريعة. نقطة التوقف هي علامة خاصة تشير إلى المكان الذي تريد أن يتوقف فيه تنفيذ التطبيق، ربما بناءً على حالة التطبيق. يمكنك تعيين نقطة توقف إما عن طريق النقر بزر الماوس الأيسر على اللوحة الجانبية اليسرى، أو عن طريق النقر على موقع الرمز والضغط على Ctrl+F8 . دعونا نلقي نظرة على ثلاثة أنواع من نقاط التوقف: نقاط توقف الخط، ونقاط مراقبة المجال، ونقاط توقف الطريقة. هكذا تبدو:-
على الخط:
إذا كانت العبارة تحتوي على تعبير لامدا، فإن IDEA يطالبك باختيار ما إذا كنت تريد وضع نقطة توقف على العبارة بأكملها أو على تعبير لامدا على وجه التحديد:
-
على طريقة:
-
على الصف:
- Bee.java:24 — في فئة Bee على السطر 24
- Main.java:14 — في الفئة الرئيسية على السطر 14
دعنا نذهب للقيام بهذا الشيء الذي يسمى تصحيح الأخطاء!
أنا أنتمي إلى عائلة طويلة من مربي النحل، لذا فإن المشروع الذي أنشأته لتوضيح تصحيح الأخطاء يصف نماذج لعملية جمع النحل للرحيق، ومعالجة الرحيق وتحويله إلى عسل، ثم الحصول على العسل من خلية النحل. وفقًا لملف- النحلة — نحلة عاملة عادية
- BeeQueen - ملكة النحل
- خلية النحل - خلية النحل
- HoneyPlant - نبات العسل (مصدر الرحيق) الذي يتم جمع الرحيق منه
- رئيسي - هذا هو المكان الذي نجد فيه
public static void main()
الطريقة التي يبدأ بها التنفيذ.
main()
الطريقة، فسنجد أن برنامجنا لا يحسب كمية العسل فحسب، بل يؤدي أيضًا إلى حدوث استثناء... نحتاج إلى التحقيق وتحديد المشكلة. من مكدس التتبع الموجود في الزاوية اليمنى السفلية، يمكننا أن نرى أنه في RuntimeException تم طرحه على HoneyPlant.java:20
: هذا بالضبط ما كنا نتحدث عنه أعلاه. دعونا نراقب RuntimeException عن طريق تشغيل main()
الطريقة في وضع التصحيح. للقيام بذلك، انقر فوق سهم المثلث الأخضر في IntelliJ IDEA بجوار الطريقة main()
. ونتيجة لذلك، سنقوم بإيقاف البرنامج في اللحظة التي تسبق طرح الاستثناء وسنرى هذا الرمز: للحصول على كافة المعلومات المتاحة، نحتاج إلى البحث في قسم التصحيح. يحتوي على جزء المتغيرات الذي يعرض جميع المتغيرات المتوفرة في هذا الجزء من التطبيق:
- الرحيق = 1.0؛
- سعة الرحيق = -1.0.
if (nectar == 0) {
return 0;
}
لكن المشكلة هي أننا نتحقق من المتغير الخاطئ. هذا خطأ في الكود. بدلاً من التحقق من كمية الرحيق المتوفرة في الزهرة (المخزنة في متغير سعة الرحيق )، يتحقق البرنامج من قيمة معلمة الرحيق الخاصة بالطريقة ، وهي كمية الرحيق التي نريد أخذها من الزهرة. ها هو! خطأنا الأول! بعد إصلاح هذا نحصل على الكود التالي:
if (nectarCapacity == 0) {
return 0;
}
الآن قم بتشغيل main()
الطريقة بالطريقة العادية (Run 'Main.main()')
. لا يوجد استثناء، ويعمل البرنامج: يعمل التطبيق حتى الاكتمال ويعطي الإجابة التالية:
"33.0 honey was produced by 7 bees from 2 honey plants"
سيكون كل شيء على ما يرام الآن، لكن هذه الإجابة غير صحيحة... وفقًا لملف README ## Documentation
Presentation based on honey production.
**Note**: 2 units of nectar = 1 unit of honey
من الواضح أن الطريقة الرئيسية تحتوي على نباتين من العسل يحتويان على 30 و40 وحدة من الرحيق على التوالي. ومن ثم، ينبغي أن نحصل في النهاية على 35 وحدة من العسل. لكن البرنامج يخبرنا أننا حصلنا على 33. أين ذهبت الوحدتان الأخريان؟ هيا نكتشف! للقيام بذلك، قم بتعيين نقطة توقف في الطريقة Main.main()
الموجودة في السطر 28، حيث beeHive.populateHoney()
يتم استدعاؤها وتشغيل main()
الطريقة في وضع التصحيح: سننظر في هذه النقطة بمزيد من التفصيل. توقف البرنامج عن التنفيذ قبل تنفيذ السطر 28. في الجزء السفلي، نرى قسم التصحيح، الذي يعرض جميع المعلومات المتوفرة حول التطبيق قيد التشغيل. كما ذكرنا من قبل، يحتوي جزء المتغيرات على كافة المتغيرات والكائنات المتوفرة في هذا الجزء من التطبيق. يعرض جزء الإطارات الخطوات التي يمر بها التطبيق - يمكنك الاطلاع على خطوات (الإطارات) السابقة والاطلاع على كافة البيانات المحلية. لمواصلة تشغيل البرنامج، يمكنك الضغط على F9 أو الأيقونة الخضراء، كما هو موضح أدناه: لإيقاف البرنامج، انقر فوق المربع الأحمر: لإعادة تشغيل التطبيق في وضع التصحيح، انقر فوق السهم: علاوة على ذلك، يمكنك المتابعة من خلال التطبيق خطوة بخطوة باستخدام مفتاحين:
- F8 - التنقل خلال التعليمات البرمجية دون الدخول في الأساليب؛
- F7 - التنقل عبر التعليمات البرمجية والدخول إلى الأساليب.
beeHive.populateHoney()
الطريقة. وبالدخول إلى هذه الطريقة، نحصل على ما يلي: الآن سنستخدم F8 للتنقل عبر هذه الطريقة ووصف ما يحدث فيها:
- السطر 25 - يتم استخدام Stream API لجمع الرحيق من جميع النحل
- السطر 26 - يتم إضافة العسل الجديد إلى العسل الموجود؛
- السطر 27 – يتم تخصيص وحدتين من العسل للملكة
- السطر 28 - تتم إزالة هاتين الوحدتين من الكمية الإجمالية للعسل
- السطر 29 - الملكة تأكل هذا العسل.
## Documentation
Presentation based on honey production.
**Note**:
* 2 units of nectar = 1 unit of honey
* The queen bee eats 2 units of honey every time when beehive is replenished with honey.
لقد انتهينا. لقد أصلحنا جميع الأخطاء التي وجدناها. يمكننا الاستمرار بهدوء مع المظهر المتعجرف، واحتساء بعض القهوة، وقراءة المقالات على دعونا نلخص
وفي هذا المقال تعلمنا:- يحتوي عمل كل شخص على أخطاء ويعد تصحيح الأخطاء طريقة رائعة لإصلاحها
- ما هي نقطة التوقف وما هي أنواع نقاط التوقف الموجودة
- كيفية تعيين نقطة توقف الاستثناء
- كيفية التنقل عبر التعليمات البرمجية في وضع التصحيح
GO TO FULL VERSION