التنقل بأمان بين سلاسل مكالمات "الحصول على" مع الاختيارية
في برمجة Java، من الشائع مواجهة سلاسل من مكالمات "الحصول على"، مثل ما يلي:
house.getFloor(0).getWall(WEST).getDoor().getDoorknob();
لتجنب استثناءات NullPointerExceptions المحتملة، غالبًا ما يلجأ المطورون إلى عمليات التحقق من القيمة الفارغة المطولة:
if (house != null &&& house.getFloor(0) &&& house.getFloor(0).getWall(WEST) != null &&& house.getFloor(0).getWall(WEST).getDoor() != null) ...
يصبح هذا الأسلوب أكثر صعوبة مع سلاسل المكالمات الأطول. هل هناك حل أكثر أناقة؟
نعم، مع تقديم Java 8 للنوع الاختياري، أصبح التعامل مع القيم الخالية في سلاسل الحصول أسهل بكثير.
استخدام اختياري للتعامل مع القيم الخالية
Optional هي فئة مجمعة تمثل قيمة اختيارية. يمكن أن تحتوي إما على قيمة غير فارغة أو تكون فارغة.
لاستخدام اختياري للتعامل مع القيم الخالية في سلاسل الحصول، يمكننا الاستفادة من إمكانات التسلسل الخاصة بها باستخدام طريقة الخريطة ().
ضع في الاعتبار المثال التالي:
Optional.ofNullable(house) .map(house -> house.getFloor(0)) .map(floorZero -> floorZero.getWall(WEST)) .map(wallWest -> wallWest.getDoor()) .map(door -> wallWest.getDoor());
ينشئ هذا الرمز سلسلة من الكائنات الاختيارية، يمثل كل منها نتيجة مكالمة الحصول المقابلة.
فوائد الاستخدام اختياري
يوفر الاستخدام الاختياري العديد من الفوائد:
الاستنتاج
إذا كنت غير قادر على تجنب ذلك يعد انتهاك قانون ديميتر باستخدام الاختياري أسلوبًا موصى به للغاية للتنقل بأمان في سلاسل مكالمات "الحصول على". فهو يوفر طريقة أنيقة وفعالة للتعامل مع القيم الخالية، مما يضمن قوة وموثوقية التعليمات البرمجية الخاصة بك.تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3