جمل الحماية
جزء من قسم Logic & Flow في رحلة Java على Coddy — الدرس 38 من 59.
جمل الحماية (Guard clauses) هي جمل شرطية توضع في بداية الدالة للتحقق من الشروط غير الصالحة والعودة مبكراً. وهي تساعد في جعل الكود أكثر نظافة وقابلية للقراءة من خلال معالجة الحالات الاستثنائية أولاً.
لنلقِ نظرة على دالة بدون جمل الحماية (guard clauses):
public int divide(int num, int den) {
if (den != 0) {
if (num >= 0) {
return num / den;
} else {
return -1;
}
} else {
return -1;
}
}نفس الطريقة مع جمل الحماية (guard clauses):
public int divide(int num, int den) {
if (den == 0) return -1;
if (num < 0) return -1;
return num / den;
}بعد تنفيذ أي من الكودين باستخدام divide(10, 2)، تكون النتيجة هي:
5
التحدي
سهلقم بإنشاء دالة (method) تسمى validatePassword تأخذ وسيطاً واحداً (argument):
- سلسلة نصية (
password) للتحقق من صحتها
يجب أن تستخدم الدالة جمل الحماية (guard clauses) للتحقق من كلمة المرور وإرجاع سلسلة نصية للرسالة بناءً على هذه القواعد:
- إذا كانت كلمة المرور null: قم بإرجاع "Password cannot be null"
- إذا كانت كلمة المرور فارغة: قم بإرجاع "Password cannot be empty"
- إذا كان طول كلمة المرور أقل من 8: قم بإرجاع "Password must be at least 8 characters"
- إذا كانت كلمة المرور تحتوي على مسافات: قم بإرجاع "Password cannot contain spaces"
- إذا اجتازت جميع الفحوصات: قم بإرجاع "Valid password"
ورقة مرجعية
جمل الحماية (Guard clauses) هي عبارات شرطية في بداية الدالة تتحقق من الشروط غير الصالحة وتعود مبكراً، مما يجعل الكود أكثر نظافة وقابلية للقراءة.
بدون جمل الحماية:
public int divide(int num, int den) {
if (den != 0) {
if (num >= 0) {
return num / den;
} else {
return -1;
}
} else {
return -1;
}
}مع جمل الحماية:
public int divide(int num, int den) {
if (den == 0) return -1;
if (num < 0) return -1;
return num / den;
}جرّب بنفسك
import java.util.Scanner;
public class Main {
public static String validatePassword(String password) {
// اكتب الكود الخاص بك هنا
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String password = scanner.nextLine();
if (password.equals("null")) {
password = null;
}
System.out.println(validatePassword(password));
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادجمع وطرح المصفوفاتالمصفوفات المتعرجة (Jagged Arrays)المصفوفات ثلاثية الأبعاد وما بعدهاأنماط المصفوفات ثنائية الأبعاد الشائعةمراجعة - كل شيء عن المصفوفات2HashMap الجزء الأول
ما هو الـ HashMap؟تعريف الـ HashMapالوصول إلى القيمالتحقق من وجود المفتاحتعديل القواميسملخص - HashMap3HashMap الجزء الثاني
دوال HashMapالتكرار باستخدام keySet()التكرار باستخدام entrySet()HashMap متداخلمراجعة - إدارة المستودعمراجعة - عمليات HashMap6التحكم المتقدم في تدفق البرنامج
العبارات المعنونةتعبير Switchمطابقة الأنماطجمل الحمايةمراجعة - تدفق التحكم