الفصل: تصميم الطريقة
البند 49: التحقق من صحة المعلمة
- القيود على المعلمات:
عادةً ما يكون للطرق والمنشئات قيود على قيم المعلمات (على سبيل المثال، المؤشرات غير السالبة، والمراجع غير الخالية).
ويجب توثيق هذه القيود والتحقق منها في بداية الطريقة.
- أهمية التحقق:
اكتشف الأخطاء في أقرب وقت ممكن لتجنب حالات الفشل غير المتوقعة أو السلوك غير الصحيح في الطريقة.
يمكن أن تتسبب الأساليب التي لا تتحقق من معلماتها في حدوث أعطال يصعب تصحيحها.
- توثيق الاستثناءات:
استخدم علامة @throws Javadoc لتوثيق الاستثناءات التي يتم طرحها في حالة انتهاك القيود.
الاستثناءات الشائعة: IllegalArgumentException، IndexOutOfBoundsException، NullPointerException.
مثال للتحقق من المعلمة:
public static int mod(int x, int y) { if (y- استخدام الكائنات.requireNonNull:
تم تقديمه في Java 7، ويتم استخدامه للتحقق من عدم صلاحية الكائنات.
إرجاع القيمة التي تم تمريرها بعد التحقق:this.m = Objects.requireNonNull(m, "Parâmetro 'm' não pode ser nulo");- التحقق من النطاقات (Java 9):
طرق checkFromIndexSize وcheckFromToIndex وcheckIndex للتحقق من الفهارس في القوائم والمصفوفات.
أقل مرونة، وتستخدم بشكل رئيسي للمجموعات.
**
assert x > 0 : "Valor de x deve ser positivo";
- حالات خاصة:
يجب على المنشئين دائمًا التحقق من صحة المعلمات المخزنة لاستخدامها لاحقًا.
يمكن إجراء استثناءات للفحوصات المكلفة، حيث يكون الشيك ضمنيًا أثناء الحساب.
- مثال للتحقق الضمني:
يفترض Collections.sort(List) أن الكائنات قابلة للمقارنة بشكل متبادل. يتم التحقق أثناء عملية الفرز.
- ترجمة الاستثناءات:
عندما يؤدي التحقق الضمني إلى استثناء خاطئ، استخدم "ترجمة الاستثناء" لطرح الاستثناء الصحيح.
- المرونة في القيود:
يجب تصميم الأساليب لتكون عامة قدر الإمكان، مع فرض أقل عدد ممكن من القيود حسب الضرورة.
- خاتمة:
توثيق وتنفيذ فحوصات صحة المعلمة على الأساليب والمنشئات. الممارسة ضرورية لتجنب الأخطاء المستقبلية وتسهيل تصحيح الأخطاء.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3