
قبل قراءة هذه النصائح ، يجب عليك قراءة وثائق Kotlin وتعلم اللغة بنفسك على try.kotlinlang.org
. نظرًا لأن هذه النصائح تهدف بشكل خاص إلى استخدام Kotlin في سياق تطوير Android ، يجب أن تكون لديك أيضًا تجربة مع Android SDK. يُنصح أيضًا بالتعرف على المكوِّن الإضافي Kotlin واستخدام Kotlin مع Android Studio من JetBrains (منشئو Kotlin)
Kotlin الأساسية نصائح الروبوت
تحميل كسول
التحميل الكسول له العديد من المزايا. على سبيل المثال ، مثل:
- يمكنك توفير وقت بدء التشغيل لأن تحميل بعض البيانات يتأخر حتى تكون هناك حاجة إليه. ينطبق هذا بشكل خاص على Android ، لأن المستخدم سيشاهد محتويات التطبيق بشكل أسرع بدلاً من وقت الانتظار الطويل لبدء تشغيل انقر فوق انقر فوق التنزيل.
- يمكنك حفظ الذاكرة ، لأن المورد يتم تحميله في ذاكرة الجهاز فقط عند الطلب. هذا مهم بشكل خاص لمنصات الهواتف المحمولة ، لأن موارد الهواتف المحمولة محدودة للغاية.
على سبيل المثال ، إذا كنت تقوم بإنشاء تطبيق تسوق يتم فيه توجيه المستخدمين بشكل رئيسي حسب اختيارك ، فيمكنك تكوين التحميل البطيء على واجهة برمجة تطبيقات التسوق الفعلية ، على سبيل المثال ، شيء مثل هذا:
val purchasingApi: PurchasingApi by lazy { val retrofit: Retrofit = Retrofit.Builder() .baseUrl(API_URL) .addConverterFactory(MoshiConverterFactory.create()) .build() retrofit.create(PurchasingApi::class.java) }
نتيجة استخدام مثل هذا التنزيل البطيء هو أنه إذا لم يحاول المستخدم إجراء عملية شراء في التطبيق ، فلن تقوم بتنزيله واستخدام الموارد غير المعلنة.
يعد التحميل البطيء أيضًا طريقة جيدة لتغليف منطق التهيئة ، على سبيل المثال:
val bounds: RectF by lazy { RectF(0f, 0f, width.toFloat(), height.toFloat()) }
بمجرد إجراء المكالمة الأولى ، يتم إنشاء مثيل لـ RectF استنادًا إلى العرض والارتفاع الحاليين للعرض ، مما يلغي الحاجة إلى إنشائه بشكل منفصل وتعيين هذا الكائن.
العرف والرسامين
لقراءة الإعدادات المخصصة بلغة Kotlin ، يتم استخدام نموذج هيكلي مع سلوك مستخدم محدد للحصول على الحقول وتعيينها. عند استخدام نماذج لأطر عمل معينة ، مثل Parse SDK ، يمكنك تحديد قيم ليست متغيرات فئة محلية ، ولكن يتم استردادها وتخزينها باستخدام طريقة مخصصة ، على سبيل المثال ، من JSON.
باستخدام طرق الاستحواذ والتثبيت المعرفة من قبل المستخدم ، يمكننا تبسيط الوصول ، على سبيل المثال:
@ParseClassName("Book") class Book : ParseObject() {
سيكون استرداد هذه القيم مشابهًا لاستخدام بناء جملة الوصول إلى الخاصية في الموديلات الأخرى ، مثل:
val book = api.getBook() textAuthor.text = book.author
الآن ، إذا كنت بحاجة إلى نقل النموذج الخاص بك من Parse إلى مصدر بيانات آخر ، فلن تحتاج إلى تغيير الكود عملياً.
امدا
Lambdas تقليل ازدواجية أسطر التعليمات البرمجية في الملف المصدر والسماح باستخدام البرمجة الوظيفية. على الرغم من أن lambdas يستخدمه Android حاليًا ، فإن Kotlin ينقلها إلى مستوى جديد ، مما يضمن أنك لست مضطرًا للتعامل مع Retrolambda أو تغيير الطريقة التي تنشئها.
على سبيل المثال ، يبدو الاستماع إلى ملف مثل هذا:
button.setOnClickListener { view -> startDetailActivity() }
وهذه هي الطريقة التي تعمل بها مع قيم الإرجاع:
toolbar.setOnLongClickListener { showContextMenu() true }
في Android SDK ، غالبًا ما تكون هناك حاجة لتنفيذ إحدى هذه الطرق. لامدا تتواءم مع هذا مع اثارة ضجة.
فئات البيانات
تعمل فئات البيانات على تبسيط الفئات عن طريق إضافة أساليب
equals()
و
hashCode()
و
copy()
و
toString()
تلقائيًا. يوضحون البيانات التي ينبغي استخدامها في النموذج ، ويفصلون البيانات عن المنطق.
على سبيل المثال ، فيما يلي فئة بيانات:
data class User(val name: String, val age: Int)
هذا كل شيء. ليس هناك ما هو أكثر حاجة لعمله. إذا كنت تستخدم فئات البيانات مع شيء مشابه لـ Gson أو مكتبة أنواع JSON أخرى ، فيمكنك إنشاء مُنشئ افتراضي له قيم افتراضية ، على سبيل المثال:
data class User( @SerializedName("name") val name: String = "", @SerializedName("age") val age: Int = 0 )
تصفية مجموعة البيانات
عند العمل مع واجهة برمجة التطبيقات ، تظهر الحاجة إلى معالجة المجموعات باستمرار. في معظم الأحيان ، يحتاجون إلى تصفية محتويات أو تعديلها.
باستخدام مجموعات التصفية Kotlin ، يمكنك جعل الكود أكثر بساطة وأكثر قابلية للفهم. يمكنك تحديد محتويات قائمة النتائج عن طريق تصفية المجموعات ، على سبيل المثال ، مثل هذا:
val users = api.getUsers() val activeUsersNames = items.filter { it.active } adapter.setUsers(activeUsers)
تشبه طرق تصفية المجموعات المدمجة في Kotlin الأساليب المستخدمة في لغات البرمجة الأخرى مثل Java 8 أو عند العمل مع أنواع مجموعة Swift. تعمل الطرق الموحدة لتصفية المجموعات على تبسيط الفهم المتبادل عند التواصل مع الموظفين حول الحاجة إلى إجراء عمليات محددة للحصول على قوائم العناصر الضرورية وعرضها.
بهذا يختتم الجزء الأول من المقالة ويدعوك لحضور ندوة عبر الإنترنت مجانًا حول الموضوع: "اختبار الوحدة في Android" .