السلام عليكم ..

منذ يومين تقريباً، قمت بالتغريد عن مشروع جديد بدأته قبل مدة قصيرة .. وكان محور تغريداتي تقليص عدد سطور الكود بنسبة 60 % وقد أعجب ذلك العديد من المبرمجين :-) .. في هذه التدوينة سأشرح فكرة المشروع أكثر وأذكر بعض الأفكار التي كانت تراودني الفترة الماضية ..

أولاً قبل أن أدخل في تفاصيل المشروع.. لماذا أتكلم بلغة السطور ؟

بشكل عام، يُقاس التطبيق او المشروع البرمجي بعدد السطور، مثلاً :
عدد الأسطر البرمجية التي كتب بها نظام التشغيل ويندوز 8 اكثر من 60 مليون سطر !، بالنسبة لنظام الأنرويد فهي أكثر من 10 مليون سطر، و 85 مليون سطر تقريباً لنظام آبل ماك أو-إس!

و لا توجد طريقة أخرى لقياس أي تطبيق او مشروع بغير عدد الأسطر – على حسب علمي 😀 – ولكن .. هل عدد الأسطر الأكثر هو الأفضل ؟

لا، أبداً.. يُقال : كلما زاد عدد الأسطر البرمجية، كلما كنت عرضةً للمشاكل والأخطاء .. وهذا القول صحيح، ولكن لا ينطبق على كل السوفتوير بالعالم.

 

أنواع الكود!

من وجهة نظري، هنالك 3 أنواع من الأكواد التي نقوم بكتابتها :

– الكود المألوف : وهي الأكواد التي نقوم بتكرارها مع كل مشروع برمجي او تطبيق، مثلاً : If Statment , For, Foreach ..  ToString() .. UIElement.Prop = Val .. إلخ .

– الكود المألوف بشكل جزئي : وهي الأكواد التي نقوم بتكرارها مع بعض المشاريع البرمجية او التطبيقات، مثلاً : HttpClient , Local Storage, Local Ssttings .. إلخ .

– الكود الخاص : وهي الأكواد التي لا نقوم بتكرارها مع أي مشروع آخر وتكون مخصصة لكل مشروع .. مثلاً : التعامل مع API خاص بهذا المشروع .
تقريباً، نحن نكتب مئات الأسطر البرمجية من النوع الأول يومياً والتي يمكن إختزال أكثر من 60 سطر منها!
أهلاً بكم في Project Codina :)

مثال بسيط لما يقوم به كودِنا :
codina-1
حيث ان “ToNullableString()” هي إضافة ملحقة من ملحقات كودِنا :-)

في هذا المثال البسيط، أردت ان أقوم بتحليل بيانات من نوع JSON لتكون عبر متغيرات داخل التطبيق، ولكن تفاجأت بأن البيانات تم تغييرها ولم تأتي “guid” معها .. في هذه الحالة، أنا مظطر ان اقوم بالتأكد من أن المعلومات موجودة أولاً قبل ان أحللها وأستخدمها .. فكتبت 8 سطور بسيطة لذلك !

ولكن، مع كودِنا .. قمت بذلك بسطر واحد فقط، ونجح الأمر :-)
وكان هذا الكود الخاص بالملحقة “ToNullableString()”:codina-2

هذا المثال ليس مجرد مثال، وإنما هو سبب رئيسي جعلني أفكر في طرح فكرة مشروع كودِنا، وجعلني أفكر بمئات الأسطر المكررة التي كتبتها والتي أخذت وقتاً و وجهداً كبيرين .. وهذه هي “الحالة 1” .
إلام يهدف مشروع كودِنا :
ببساطة : “توفير صيغ برمجية مناسبة موّحدة للعديد من الحالات لتسهيل الأمر على المبرمج” .
وأقصد بصيغ هنا الملحقات او الإضافات مثل “ToNullableString()” من مثالي السابق .

ما هي الحالات التي يعمل بها مشروع كودِنا :
العديد من الحالات، ولكن ليس كل الحالات .. لا يمكنني إعطاء كل الحالات حتى أقوم بترتيب أفكاري كلها :) .. ولكن كمثال :

– إعطاء عنصر UI خاصية معينة إذا كانت القيمة تساوي قيمة معينة .. مثلاً : codina-3

ايضاً، بعض الأفكار المطروحة :

– تسهيل عملية تحميل بيانات من خدمة معينة، تحليل ملف البيانات، و إعطاء القيّم لقائمة ListView مثلاً :
codina-4
– تسهيل عملية تحميل البيانات عبر HttpClient .
– تسهيل عملية تتبع الأخطاء وملاحقتها .
– تسهيل عملية إعطاء قيمة موّحدة لأكثر من عنصر .
– تسهيل عملية الإتصال بخدمات طرف ثالث معروفة مثل : Bing Services, Google Services, OpenWeatherMap, EPSN .. إلخ .
– توفير خدمات عديدة بسهولة مثل : أوقات الصلاة، إدارة Local Storage, إدارة الإعدادات Local Settings .. إلخ .

كل هذه الأفكار المطروحة ستكون بسطر واحد فقط .. وتستطيع الحصول عليها عبر العديد من الخيارات على حسب الخدمة .

لماذا 60 % من عدد الأسطر :
في الحقيقة، قمت بإختباره على أكثر من حالة، وكان المتوسط تقريباً 65% .. بعض الحالات تم إختزال أكثر من 100 سطر من 150 وبعض الحالات 16 من 20 .. ولكن كمتوسط يمكننا القول انه يمكنه إحتزال 60% :)
من هم المستهدفين من هذا المشروع :
كل من يعمل على منصة الـ دوت-نت .
متى ستتوفر النسخة الأولية من المشروع للمطورين :
لا يمكنني إعطاء تاريخ محدد بنسبة 100% ولكن المتوقع ان يكون جاهزاً خلال شهر 10 أكتوير 2015 .
ما هو سعر رخصة كودِنا :
مجاني، لا يوجد أي تكلفة .
هل يمكنني مساعدتك ؟
نعم، الجميع مرحب به وبأفكاره .. يمكنك التواصل معي عبر m.mg(@)outlook(.)com
إذاً، ما رأيك بخصوص مشروع كودِنا ؟ وماذا تعتقد بشأنه ؟
شارك معي آرائك ومقترحاتك عبر التعليقات أو عبر البريد الإلكتروني المذكور سابقاً ..

شكراً لإهتمامك