الاثنين، 11 يونيو 2012

كيف تكتب كود تبدو عربية؟

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

سوف نضع الآن بعض النصائح في جعل الكود الخاصة بك تبدو سهلة القراءة في لغة كلمات.

العوامل parameters تكون معرفة لا نكرة
مثلا في هذا الإجراء:
إجراء ارسم(الشكل):
اعرض(الشكل)
لون(الشكل)
حرك(الشكل)
نهاية
أعتقد ان السبب الآن واضح لماذا نفعل ذلك!

عندما تريد ان تتأكد أن اكثر من قيمة خطأ، استخدم "ليس/ولا" بدلاً من "اذا ليس كذا وأيضا ليس كذا"
إذا ليس الرصيد.منته() وأيضا ليس الصلاحية.منتهية() وأيضا ليس الشريحة.مسروقة():
نفذ المكالمة()
تم

إذا ليس الرصيد.منته() ولا الصلاحية.منتهية() ولا الشريحة.مسروقة():
نفذ المكالمة()
تم
اسم الدالة يدل على القيمة التي ستعود بها، وليس العمل الذي تقوم به
ب = "الشجرة الخضراء في الحديقة الغناء"
اطبع فصص(ب)

ب = "الشجرة الخضراء في الحديقة الغناء"
اطبع تفصيص(ب)

لكن اسم الإجراء (void function) يدل على العمل الذي يقوم به، ويأخذ صورة فعل الأمر
قراءة.البيانات()
حساب.الحسبة()
طباعة.النتائج()

اقرأ.البيانات()
احسب.الحسبة()
اطبع.النتائج()
ماذا لو كانت الدالة معرفة داخل فصيلة class وتعود بقيمة؟ في تلك الحالة استخدم صيغة بدل الاشتمال
أ = الموظف : هات.المرتب()
أ = الموظف: مرتبه()

ص = الصورة: تدوير()
ص = الصورة: تدويرها()
مذكر ام مؤنث؟ حسب اسم الفصيلة، لأنه لو كانت الفصيلة مثلاً "سيارة" فغالباً سوف نتحدث عن الكائنات منها بصورة س، سيارة1، السيارة...الخ، فسنسمي الدوال مثلاً "سرعتها"، "لونها".

عند تعريف بيانات داخل فصيلة fields، تذكر انها ستستخدم بصيغة الإضافة
فصيلة موظف:
له الاسم، المرتب
له المدير، المساعد
تم
م = اقرأ.موظف( )
الاسم المساعد المدير م = "ميشو"

فصيلة موظف:
له اسم، مرتب
له مدير، مساعد
تم
م = اقرأ.موظف( )
اسم مساعد مدير م = "ميشو"

بالمناسبة، لا ارى مشكلة في تعبير مثل "س النقطة، ص النقطة"، قياساً على "عين الفعل، لام الفعل" في علم الصرف.

في حالة وجود اختلاف بين القاعدة وقابلية البرنامج للقراءة، القابلية أهم
مثلاً قمت بتسمية الدالة "اقرأ.الموظف" في المثال السابق بدلاً من "قراءة.موظف" او ما شابه، لأني شعرت ان هذا اوضح للقاريء. لماذا هو اوضح؟ لا اعرف. ربما لأن دالة مثل "اقرأ.موظف" لا تشبه الدوال الرياضية (تحسب قيمة من قيمة) بل هي اقرب للإجراءات اصلاً: كأني أعطي البرنامج امراً أن يقرأ موظفاً ويضع النتيجة في م.

ماذا عن اسماء البيانات المكونة من اكثر من كلمة؟

لو كان اسم البيان اصلا في صورة اضافة، مثل "رقم جلوس"، فاستخدمه كما هو:
أ = رقم.جلوس م
لكن لو كان اسماً وصفة، مثل "السرعة النسبية"؟ ليس لدي اجابة محددة. يمكنك ان تستخدمه كما هو:
أ = السرعة.النسبية م
وتقرأها "السرعة النسبية الخاصة بـ م"

أو يمكنك أن تسميه سرعة.نسبية وحين تقرأ السطر التالي:
أ = سرعة.نسبية م
تقرأه "سرعة م النسبية".

القاعدة المختصرة

حين تسمي متغيراً أو دالة أو رسالة أو حقل بيانات، فكر في شكل الكود التي ستستعملها. لو كانت تصلح للقراءة بصوت عال فقد سميتها جيداً :)

هل لاحظت ان هذا المقال يبدو كمقال عن النحو لا فقط البرمجة؟ هذا لأن كلمات لغة البرمجة العربية الجميلة

ليست هناك تعليقات: