- بواسطة x32x01 ||
في لحظة معينة أي مبرمج بيحس بالإحباط ده 😅
إنه بيكتب نفس الـ helper functions كل مرة في كل مشروع جديد…
ليه ما نخليش الكود نفسه أذكى وأسهل في الاستخدام؟ 🤔
بدل ما تحط كل حاجة في helper classes أو ملفات utilities منفصلة،
تخلي الوظائف دي جزء طبيعي من اللغة نفسها باستخدام Extensions.
ده بيخلي الكود:
✅ باستخدام Core Extensions:
💬 النتيجة: كود أبسط وأسرع في الفهم
✅ بشكل أكثر أمانًا ووضوحًا:
💬 كده أنت قللت احتمالية الـ crash وخليت الكود أذكى
✅ باستخدام extensions:
💬 هنا الفرق الحقيقي في Clean Code
✅ باستخدام extension:
💬 كده قللت التكرار بشكل كبير جدًا
✅ بشكل أبسط:
💬 الكود بقى أقرب للـ natural language
الفكرة إنها بتغير طريقة تفكيرك كمبرمج 👇
فأنت كده بتضيع وقتك على حاجات ممكن تتبسط جدًا 🔥
فكرة Core Extensions بتخليك:
الكود الشاطر هو اللي يخدمك مش العكس 😄🚀
إنه بيكتب نفس الـ helper functions كل مرة في كل مشروع جديد…
MediaQueryTheme.of- parsing
- nesting للـ widgets
- وتكرار utilities مالوش نهاية 💀
ليه ما نخليش الكود نفسه أذكى وأسهل في الاستخدام؟ 🤔
فكرة Core Extensions 🧠
الفكرة ببساطة جدًا:بدل ما تحط كل حاجة في helper classes أو ملفات utilities منفصلة،
تخلي الوظائف دي جزء طبيعي من اللغة نفسها باستخدام Extensions.
ده بيخلي الكود:
- أنضف ✨
- أسرع في الكتابة ⚡
- وأسهل في القراءة 👀
أمثلة عملية هتفرق معاك جدًا 💡
خلينا نشوف الفرق بين الأسلوب التقليدي والأسلوب الذكي 👇📱 التعامل مع الشاشة والثيم
❌ الطريقة القديمة: Code:
MediaQuery.of(context).size.width
Theme.of(context).primaryColor Code:
context.screenWidth
context.theme.primaryColor 🔢 تحويل النصوص لأرقام
❌ الطريقة التقليدية: Code:
int.parse(value) Code:
value.toIntOrNull() 🧱 التخلص من الـ Widget Nesting
❌ الشكل المزعج: Code:
Padding(
padding: EdgeInsets.all(16),
child: Center(
child: Text('Hello'),
),
) Code:
Text('Hello')
.center()
.paddingAll(16) 📋 Lists بشكل أنظف
❌ الطريقة التقليدية: Code:
children: [
Widget1(),
SizedBox(height: 16),
Widget2(),
] Code:
children.separatedBy(SizedBox(height: 16)) ⏳ التعامل مع الـ async بسهولة
❌ الشكل العادي: Code:
await Future.delayed(Duration(seconds: 2)); Code:
await 2.delay(); ليه Core Extensions فكرة قوية جدًا؟ 🔥
الفكرة مش مجرد اختصار كود…الفكرة إنها بتغير طريقة تفكيرك كمبرمج 👇
✔ تقلل boilerplate
بدل تكرار نفس الأكواد في كل مشروع
✔ تخلي الكود readable
أي حد يدخل المشروع يفهمه بسرعة
✔ تخليك أسرع في التطوير
وقت أقل في الكتابة = إنتاجية أعلى ⚡
✔ تحسن تجربة العمل
الكود بقى ممتع بدل ما يكون مزعج
تنظيم الـ Extensions مهم جدًا 🧩
علشان الفكرة تفضل scalable:- كل extension في ملف مستقل
- grouped حسب النوع (UI / String / Async / List)
- reusable في أي مشروع
- مكتوب بطريقة واضحة ومفهومة
الخلاصة 💭
لو لسه بتكرر نفس الـ helper functions في كل مشروع…فأنت كده بتضيع وقتك على حاجات ممكن تتبسط جدًا 🔥
فكرة Core Extensions بتخليك:
✔ تكتب أقل
✔ تفهم أسرع
✔ تبني كود أنضف
✔ وتشتغل باحترافية أعلى
وفي النهاية…✔ تفهم أسرع
✔ تبني كود أنضف
✔ وتشتغل باحترافية أعلى
الكود الشاطر هو اللي يخدمك مش العكس 😄🚀