الثوابت في Kotlin: الطرق الصحيحة للإعلان والاستخدام
مرحبًا بالجميع! لقد بدأت للتو في تعلم Kotlin بعد Java، ويحيرني مسألة إعلان الثوابت. في Java، كنت معتادًا على كتابة `public static final String MY_CONST = "value";`، بينما في Kotlin أرى عدة طرق مختلفة ولا أفهم أيها الصحيح.
على سبيل المثال، أرى أنه يمكن كتابة:
```kotlin
class MyClass {
companion object {
val MY_CONST = "value"
}
}
```
أو حتى ببساطة:
```kotlin
val MY_CONST = "value"
```
لكن في بعض الأدلة يكتبون عن `const val`، وفي أخرى يذكرون أن `const` يعمل فقط مع الأنواع البدائية. كما أنني مرتبك بشأن `object` و `companion object` — متى نستخدم أيهما؟ وهل يجب استخدام `companion object` كبديل لـ `static final` من Java، أم أنه نمط سيء؟
أرجو توضيح أي نهج يُعتبر صحيحًا ومتوافقًا مع أسلوب Kotlin؟ أرغب في الكتابة "بشكل صحيح" منذ البداية لتجنب إعادة العمل لاحقًا. يهمني بشكل خاص الفرق بين `val` و `const val`، وأين من الأفضل تخزين الثوابت — داخل class، في ملف منفصل، أم في object؟