التحقق من البيانات في Kotlin: المكتبات والمناهج

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

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

ابدأ الدورة

التحقق من البيانات في Kotlin: نظرة عامة على المكتبات وأمثلة عملية

التحقق من البيانات هو أحد الجوانب الأساسية لتطوير تطبيقات موثوقة. في نظام Kotlin البيئي، توجد عدة مكتبات ناضجة تسمح بوصف قواعد التحقق بشكل تصريحي، مما يريح المطور من كتابة الكود النمطي. في هذه المقالة، سنستعرض ثلاث أدوات شائعة: Konform وValiktor وKotlinx Validation، وسنناقش متى وأي أداة تختار.



1. Konform — التحقق الوظيفي المبني على Arrow

مكتبة Konform مبنية على إطار العمل الوظيفي Arrow. تستخدم مفهوم Validated لتجميع الأخطاء وتدعم هياكل البيانات البسيطة والمتداخلة.



التثبيت

// build.gradle.ktsimplementation("io.konform:konform:0.4.0")


مثال على الاستخدام

import io.konform.validation.*

data class User( val name: String, val email: String, val age: Int)

val userValidation = Validation<User> { User::name { minLength(2) hint "يجب أن يحتوي الاسم على حرفين على الأقل" maxLength(50) hint "يجب ألا يتجاوز الاسم 50 حرفًا" } User::email { pattern(Regex("^[\\\\w.-]+@[\\\\w.-]+\\\\.\\\\w{2,}$")) hint "بريد إلكتروني غير صحيح" } User::age { minimum(18) hint "يجب أن لا يقل العمر عن 18 عامًا" maximum(120) hint "يرجى إدخال عمر حقيقي" }}

fun main() { val user = User("أ", "بريد-غير-صحيح", 15) val result = userValidation(user) if (result.errors.isNotEmpty()) { result.errors.forEach { error -> println("الحقل: ${error.path} — ${error.message}") } } else { println("تم التحقق بنجاح") }}


الميزات

  • تكامل كامل مع Arrow لتكوين عمليات التحقق
  • دعم الكائنات المتداخلة والقوائم
  • إنشاءات DSL آمنة من حيث النوع
  • تجميع جميع الأخطاء (لا يتوقف عند أول خطأ)


2. Valiktor — التحقق الأمرّي مع واجهة fluent API

Valiktor يقدم نهجًا أكثر تقليدية باستخدام واجهة fluent. المكتبة لا تتطلب تبعيات وظيفية وسهلة التعلم للمطورين الملمين بلغة Java.



التثبيت

implementation("org.valiktor:valiktor-core:0.12.0")


مثال على الاستخدام

import org.valiktor.functions.*import org.valiktor.validate

data class Order( val id: String, val amount: Double, val items: List<String>)

fun validateOrder(order: Order) { validate(order) { validate(Order::id).isNotBlank().hasSize(10..36) validate(Order::amount).isPositive().isLessThanOrEqualTo(10000.0) validate(Order::items).isNotEmpty().hasSize(1..50) }}

fun main() { val order = Order("", -100.0, emptyList()) try { validateOrder(order) println("الطلب صحيح") } catch (e: Exception) { println("خطأ في التحقق: ${e.message}") }}


الميزات

  • API بسيط وواضح بدون تجريدات وظيفية
  • يرمي استثناء عند أول خطأ (وضع الفشل السريع)
  • دعم أدوات التحقق المخصصة عبر الامتدادات
  • تكامل سهل مع مشاريع Java


3. Kotlinx Validation — المكتبة الرسمية من JetBrains

على الرغم من أن مشروع Kotlinx Validation لا يزال في مرحلة تجريبية، إلا أنه يقدم بالفعل نهجًا مثيرًا للاهتمام باستخدام التعليقات التوضيحية والانعكاس، مشابهًا لـ Javax Validation (Bean Validation).



التثبيت

implementation("org.jetbrains.kotlinx:kotlinx-validation:0.1.0")


مثال على الاستخدام

i                    

توصيات