مراجعة الكود في Kotlin: ما يجب التحقق منه وكيفية تقديم ملاحظات للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مراجعة الكود في Kotlin: ما يجب التحقق منه وكيفية تقديم الملاحظات

\n\n

مراجعة الكود (Code review) ليست مجرد إجراء شكلي، بل هي أداة قوية لتحسين جودة المشروع ونمو الفريق. بالنسبة للمطورين المبتدئين في Kotlin، غالبًا ما تسبب عملية المراجعة الخوف: "ماذا لو فاتني خطأ؟"، "كيف أقول لزميلي أن كوده سيء؟". في هذه المقالة، سنناقش ما يجب الانتباه إليه عند مراجعة كود Kotlin وكيفية صياغة الملاحظات لتكون مفيدة وليست مسيئة.

\n\n

لن نعلمك أساسيات بناء الجملة - من المفترض أنك تكتب بالفعل بلغة Kotlin. بدلاً من ذلك، سنركز على المشكلات النموذجية التي تظهر في كود المبتدئين، وكيفية تقديم ملاحظات دون كسر العلاقات.

\n\n

1. سلامة القيم الفارغة (Null safety) والعمل مع الأنواع القابلة للفارغية

\n\n

تفتخر Kotlin بنظام الأنواع الخاص بها الذي يزيل معظم أخطاء NullPointerException في مرحلة التجميع. ومع ذلك، غالبًا ما يسيء المبتدئون استخدام عامل التشغيل !! (تأكيد عدم الفارغية) أو يعالجون القيم القابلة للفارغية بشكل غير صحيح.

\n\n

ما يجب التحقق منه:

\n
    \n
  • هل يتم استخدام !! بدون سبب وجيه؟ إذا رأيت something!!، اسأل المؤلف: "لماذا أنت متأكد من عدم وجود قيمة فارغة هنا؟ ربما من الأفضل استخدام ?.let أو ?:؟".
  • \n
  • هل يتم التعامل بشكل صحيح مع سلاسل الاستدعاءات عبر ?.؟ على سبيل المثال، user?.address?.city آمن، ولكن إذا كنت بحاجة إلى city، فمن الأفضل استخدام ?: لقيمة افتراضية.
  • \n
  • هل تم نسيان تهيئة lateinit var قبل الاستخدام؟ تحقق من أن جميع حقول lateinit سيتم تهيئتها بالتأكيد قبل القراءة الأولى.
  • \n
\n\n
// سيء\nfun getUserCity(user: User?): String {\n    return user!!.address!!.city // خطر حدوث NPE\n}\n\n// جيد\nfun getUserCitySafe(user: User?): String {\n    return user?.address?.city ?: "Unknown"\n}\n
\n\n

كيفية تقديم الملاحظات: بدلاً من "لقد كتبت كودًا سيئًا"، قل: "قد تكون هناك قيمة فارغة هنا، دعنا نستبدل !! باستدعاء آمن لتجنب الانهيار في وقت التشغيل". قدم بديلاً - هذا يعلم بدلاً من أن ينتقد.

\n\n

2. الأسلوب الاصطلاحي في Kotlin: المجموعات، دوال النطاق، و sealed class

\n\n

Kotlin ليست مجرد "Java بتركيب جمل مختلف". غالبًا ما يكتب المبتدئون في Kotlin كما لو كانوا لا يزالون يعملون في Java: يستخدمون حلقات for بدلاً من دوال المجموعات، وينسون apply و let و run، ولا يستخدمون sealed class لتمثيل الحالات.

\n\n

ما يجب التحقق منه:

\n
    \n
  • هل يتم استخدام دوال المجموعات (map، filter، firstOrNull) بدلاً من الحلقات اليدوية؟ هذا يجعل الكود أكثر إيجازًا وقابلية للقراءة.
  • \n
  • هل هناك متغيرات مؤقتة زائدة عن الحاجة؟ على سبيل المثال، val result = list.filter { ... }.map { ... } أفضل من تقسيمها إلى ثلاث خطوات بقوائم قابلة للتغيير.
  • \n
  • هل يتم استخدام sealed class للتسلسلات الهرمية التي تتطلب معالجة جميع الخيارات (مثل Result، UiState)؟ هذا مطلب إلزامي في مشاريع Kotlin الحديثة.
  • \n
\n\n
// سيء (نمط Java)\nfun getEvenSquares(list: List<Int>): List<Int> {\n    val result = mutableListOf<Int>()\n    for (i in list.indices) {\n        if (list[i] % 2 == 0) {\n            result.add(list[i] * list[i])\n        }\n    }\n    return result\n}\n\n// جيد (أسلوب Kotlin الاصطلاحي)\nfun getEvenSquaresIdiomatic(list: List<Int>): List<Int> {\n    return list.filter { it % 2 == 0 }.map { it * it }\n}\n
\n\n

كيفية تقديم الملاحظات: أشر إلى أسلوب اصطلاحي محدد: "بدلاً من حلقة for، يمكنك استخدام filter + map، هذا أقصر وأوضح. هل تريد مني أن أريك مثالاً؟". لا تفرض - اقترح المناقشة.

\n\n

3. البنية وقابلية الاختبار

\n\n

حتى لو كان المشروع صغيرًا، فإن مراجعة الكود هي لحظة ممتازة للتحقق

المدونات

توصيات الكتب