تقدم بعض الوظائف (وليس كلها) معلومات أساسية عن الفشل ، على سبيل المثال: أي وسيطة ليست كما هو متوقع (إذا كانت هناك عدة وسيطات) وما الذي كان متوقعًا بدلاً من ذلك. يجب توسيع هذا كأفضل ممارسة لجميع الوظائف.
يبدو أن الممارسة الجيدة تتكون من العناصر التالية:
رسائل الخطأ الأخرى لا تتحدث عن نوع خاطئ ، ولكن عن قيمة خاطئة.
مثال لأفضل الممارسات حتى الآن: " setBackgroundColor : وسيطة سيئة #٪ d قيمة (يجب أن تكون القيمة الحمراء بين 0-255 ، حصلت على٪ d)"
اقتراح على طول الأسطر أعلاه: "(اختياري) الوسيطة #٪ d (قيمة حمراء) لها قيمة غير متوقعة! يجب أن تكون القيمة المتوقعة بين 0-255 ، حصلت على٪ d"
في الواقع ، فإن حالات القيمة الخاطئة (بالعامية ، أو على الأقل من قبلي ، تسمى أخطاء وقت التشغيل لأن الوسائط المقدمة من النوع الصحيح ولكنها ليست القيم الصحيحة لإنتاج نتائج صحيحة) بدأت بالفعل في إعادة بنائها والابتعاد عن المثال اقتبس في آخر وظيفة. أنهم:
setBackgroundColor:
في المثال أعلاه ، لأن IIRC وفقًا لـ Vadim يعرف المستخدم ما هي الوظيفة ، لذلك لا داعي لتكرارها).lua_error(L)
لإيقاف التنفيذ) وقد يتم تغليفها بنص إضافي لأغراض العرض.فيما يتعلق بتقرير المشكلة الأولي ، أود أن أشير إلى أن استخدام العبارة as XXXX expected, got YYYY!
يشير إلى وسيطة مطلوبة في تلك الرسائل حول النوع الخاطئ - لقد قمت للتو بحساب شيء بترتيب 180 مثالًا لذلك في TLuaInterpreter.cpp
file ... وبالنسبة للوسيطات الاختيارية ، سيكون النص as XXXX is optional, got YYYY!
وقد رصدت 20 منها الآن. : ابتسامة عريضة:
فيما يلي قائمة جرد للوظائف العامة لـ TLuaInterpreter
(هناك ملفات أخرى تنشئ وظائف عامة أيضًا ، ولكن يبدو أن هذا هو القطيع الأكبر)
المصدر: TLuaInterpreter::initLuaGlobals
يشير الموضع في المجموعات التالية إلى ما إذا كانت رسائل الخطأ معيارية (إلى حد ما):
تم إصلاح هذه الوظائف الآن
(تملأ من الأسفل)
⚡ رسائل الخطأ التي يجب توحيدها بالفعل
رمز المصدر يحتاج إلى التعديل ، والرسائل بحاجة إلى التحسين. بعد ذلك ، انتقل إلى القسم "الثابت" أعلاه و / أو تعيين علامة الاختيار
كانت هذه الوظائف بالفعل توحيد الرسائل على ما يرام
✅ الوظائف الداخلية - غير معروفة للمستخدمين
✅ وظائف بدون حجج - بخير بالفعل! 😄
لم يكتمل التحقق بعد ، ولكن تم العثور بالفعل على 65 وظيفة تحتاج إلى عمل. ⚡
يتم تحديث رسالتي الأخيرة أعلاه باستمرار بآخر حالة لكل منها.
لتجنب النمو غير المنضبط لأنماط رسائل الخطأ المختلفة مرة أخرى ، يجب أن يكون إنشاء الرسالة المذكورة مركزيًا في وظيفة مساعدة ، والتي تتلقى فقط التفاصيل كما هو مذكور أعلاه ، وتعيد السلسلة الكاملة. لذلك ، يمكن إجراء التعديلات المستقبلية على بنية الجملة مرة واحدة وبسهولة.
لست متأكدًا مما إذا كان من الممكن إجراء إعادة البناء هذه مسبقًا أم أنها خارج النطاق هنا.
يكمن الخطر إذا لم يتم القيام به في رسائل الخطأ المحصنة اليوم ، غدًا بعد النمو الجامح مرة أخرى.
تم التحقق. بعد النظر في هذه الوظائف الـ 400 المنشورة من TLuaInterpreter لبضع ساعات أخرى ، لدينا إجمالي 80 وظيفة لإصلاحها. يمكنك العثور على القائمة الكاملة خلف علامات المفسد في تعليقي أعلاه. أي متطوعين؟
كانت هناك أيضًا بعض الأخطاء والأخطاء التي لا مبالاة والتي كان من الممكن تجنبها من خلال إعادة بيع ديونتي المقترحة في OP.
على سبيل المثال ، تقوم الوظيفة X بالإبلاغ عن نفسها كدالة Y بدلاً من ذلك (ربما خطأ نسخ / لصق ، ولكن في الواقع تكرار غير ضروري للبيانات)
بينما لا يزال هناك عمل مستمر داخليًا لتبسيط إنشاء النص وتوحيده ، تتم هذه المشكلة في الغالب.
يرى اللاعبون فقط رسالة خطأ النمط "نوع وسيطة خاطئة" في setPopup () ولا يرى أي وظيفة أخرى بعد الآن.
كما هو موضح في https://github.com/Mudlet/Mudlet/pull/4599#issuecomment -756775208 لا تزال هناك اختلافات في التعليمات البرمجية ووثائق wiki
سأضع علامة على هذا على أنه تم. تتم مناقشة الوظيفة الوحيدة المتبقية (setPopup) في قضية منفصلة رقم 4641 لا تزال.
وفي الوقت نفسه ، أنشأنا وظائف المساعد المطلوبة وأعطينا أخطاء كتابة ذات مغزى وأخطاء قيمة لجميع وظائف c ++.
تم فحص وظائف Lua أيضًا. لا يقوم كل منهم بالتحقق من جميع الحجج الخاصة بهم بالفعل ، ولكن إذا فعلوا ذلك ، فإنهم يقدمون رسائل خطأ إعلامية.
التعليق الأكثر فائدة
سأضع علامة على هذا على أنه تم. تتم مناقشة الوظيفة الوحيدة المتبقية (setPopup) في قضية منفصلة رقم 4641 لا تزال.
وفي الوقت نفسه ، أنشأنا وظائف المساعد المطلوبة وأعطينا أخطاء كتابة ذات مغزى وأخطاء قيمة لجميع وظائف c ++.
تم فحص وظائف Lua أيضًا. لا يقوم كل منهم بالتحقق من جميع الحجج الخاصة بهم بالفعل ، ولكن إذا فعلوا ذلك ، فإنهم يقدمون رسائل خطأ إعلامية.