طرق البرمجة السليمة

الناقل : mahmoud | الكاتب الأصلى : محمد قطان | المصدر : www.boosla.com

مما لا شك فيه أن لغة VB أصبحت من أكثر بيئات البرمجة شيوعا واستخداما وذلك يرجع
لعدة أسباب منها:

1- سهولة إنشاء التطبيقات بهذه اللغة.

2- القدرة على إنشاء تطبيقات تفي بالغرض وتختصر الكثير من الوقت والجهد الذي ستصرفه في غيرها من لغات البرمجة المتقدمة.

3- الدعم المستمر لها من قبل الشركة المصممة ( Microsoft ) .

وربما كان لاستخدام VB في مجالات متعددة وطرق كثيرة ( مثل إنشاء برامج مستقلة أو
تكامل بعض البرامج مع VBA أو بعض التطبيقات المعتمدة على الويب باستخدام IIS و
DHTML ) ربما كلن لهذا اثر في ظهور الكثير من الأخطاء في كتابة الكود ..........
وهذا في الواقع ما يعاني منه الكثير من مبرمجي هذه اللغة .........

سوف نحاول في هذه الدروس إن شاء الله التعرف على معظم الأخطاء الشائعة في كتابة
الكود وتصميم البرامج.......

مقدمة لبناء البرامج:

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

ما هي الأمور التي يجب أن تراعى في مرحلة التخطيط للمشروع ؟؟؟؟

بشكل عام يجب على المبرمج أن تكون عنده إجابة أو خلفية عن مثل هذه التساؤلات :

1- ما هو الهدف من المشروع ......
2- ما هي الحدود التي يجب أن توضع له ...
3- ما هي المؤسسة ( أو المستخدمين ) الذين سيقومون بالاستفادة من هذا المشروع ....
4- ما هو الوقت المخصص لعمليات تصميم وإنشاء البرنامج ....
هل تستطيع الإجابة عن هذه التساؤلات ؟؟؟

إذا كانت إجابتك( نعم ) فهذا يعني انك جاهز للبدء في التصميم . وأما إذا كانت ( لا
) فأنصحك بأن تتروى قليلا إلى أن تعرفها .......

تصميم واجهة الاستخدام : UI USER INTERFACE


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

1- بساطة التصميم :

هنا يجب أن يبقى ببالك دائما كمبرمج انك لست الوحيد الذي سوف يستخدم البرنامج لذا
فإن واجهة الاستخدام لابد أن تكون واضحة في تصميمها من حيث تنسيق الأزرار وحقول
البيانات مثلا ....

2- الالتزام بالأوضاع العامة والأساسية
:

وحتى تتوضح هذه أكثر سأضرب بعض الأمثلة:

أ- لا تضع زري OK و Cancel بهذا الترتيب داخل إحدى المربعات ثم تجعلها Cancel و Ok
في مربع آخر ... بل حاول أن تلتزم بالوضع العام دائما ؟؟؟؟؟

ب- العمل على تحديد مفاتيح الاختصار التي سيتم استخدامها في البرنامج ضمن أسس عامة
ومعروفة مثلا .... Open = CTR +O .....

ج- من الأفضل أن لا تتيح للمستخدم نقل عناصر التحكم أو تغيير حجمها أو ما شابه ذلك
بل اجعل لمثل هذه العناصر أماكن ثابتة ......


3- عدم استخدام ألوان كثيرة وغير مقبولة:

فإذا كنت تنوي استخدام الألوان في تصميم واجهة الاستخدام فحاول التركيز على أن تكون
واضحة ومؤثرة ولا بأس أن تعتمد على آراء بعض المبرمجين والمستخدمين ....

وهذا كله يعتمد بشكل عام على نوعية البرنامج وفي هذه سيسعفك المخطط الذي وضعته
لمشروعك عندما حددت فيه نوعي البرنامج ومستخدميه ....

والخاصة انه يجب بناء واجهة استخدام مبسطة وواضحة تعطي انطباع الرضا من المستخدم ..
لا التعقيد ...


فن كتابة الكود:

المبرمج الواعي يعمل كما يعمل الفنان في تنسيق الصورة التي يرسمها لذلك فهو يقوم
بتنسيق الكود والاعتناء به قدر الامكان وهذا يرجع بالكثير من الفوائد عليه ...
واليك بعض القواعد الأساسية في تنسيق كتابة الاكواد:

1- وضع المسافات بين اسطر الكود:

وذلك لتقسيمها إلى مجموعات منطقية وهذه تعد أوضح طرق تنسيق الكود وإليك المقارنة
التالية:

مثال كود لم يتم تنسيقه:

If question = "Yes" Then
For x = 0 To 100
DoSomething = x * 186232
If DoSomething > 3205420 Then
MsgBox "You are here"
Else
MsgBox "You are there"
End If
Next x
Else
MsgBox "later"
End If


وهذا مثال لكود وإنما بطريقة منسقة ومرتبة:

If question = "Yes" Then

For x = 0 To 100

DoSomething = x * 186232

If DoSomething > 3205420 Then

MsgBox "You are here"

Else

MsgBox "You are there"

End If

Next x

Else

MsgBox "later"

End If


فمن خلال وضع مسافات بين اسطر الكود تتمكن على الفور من مشاهدة كيفية تجميع البنية
المنطقية. كما ستجد انه قد تم وضع نظام التكرار For – Next في النصف الأول من جملة
If – Then..... وداخل نظام التكرار For – Next ستجد جملة If Then أخرى .....

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

2- إضافة التعليقات إلى الكود:

بعض المبرمجين لا يقومون بكتابة التعليقات ومستندهم في ذلك هو معرفتهم التامة
بكيفية عمل الكود ..... ولكن هذا لا ينصح به مطلقا لاسيما إذا كانوا مجموعة مبرمجين
وليس شخصا واحدا ......

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

3- استخدام طرق صحيحة لتسمية أنواع البيانات:

غالبا ما يستخدم المبرمجون في تسميتهم للمتغيرات والدالات والأدوات أسماء تكون وفقا
لما يعبر في أذهانهم في هذا الوقت , ويستكملون إنشاء برامجهم دون التفكير في
العواقب التي قد تظهر نتيجة لتلك الأسماء التي قاموا باختيارها , وقد لا تكون هذه
مهمة إذا كان القائمين على المشروع مبرمجا واحدا .... وأما إذا كانوا مجموعة
مبرمجين فيجب أن يكون بينهم اتفاق على آلية معينة لمثل هذه التسميات , وهناك الكثير
من الطرق لصيغ الاتفاق لابد وأنك اطلعت على بعضها ... بعض الأمثلة على ذلك:

Array = a ....... Data = dt .......Single =sgl

Text = txt ...... Form =frm .... Check Box = chk

كما إن عدم الترتيب الصحيح هنا في أسماء المتغيرات قد ينشئ الكثير من الخطاء واليكم
هذا المثال البسيط ...

هذا الخطأ شائع وهو يحدث مثلا عند وضعك عددا من المتغيرات في سطر واحد مثال ذلك:

Dim nVar1, nVer2, nVer3, As Integer

قد تعتقد هنا انه قد تم تخصيص نوع البيانات الخاص بالأعداد الصحيحة ( Integer )
لكافة المتغيرات الثلاثة .... ولكن الحقيقة انه قد تم تحديد المتغير الأخير فقط
(nVer3 ) كعدد صحيح وأما بالنسبة للمتغيرين الآخرين فقد تم تخصيص نوع البيانات (
Variant ) لكل منهما .....

والطريقة الصحيحة في تعريف هذه المتغيرات الثلاثة في سطر واحد تكون كالتالي:

Dim nVar1 As Integer, nVer2 As Integer, nVer3 As Integer

وأختم هذا الدرس بخطأ خفي نوعا ما ( على المبتدئين ) يكون عادة في تسمية المصفوفات
التي تبدأ برقم صفر ( 0 ) :

المصفوفة بشكل عام عبارة عن مجموعة من المكونات المعروفة التي يتم الوصول إليها من
خلال اسم متغير معروف ....... كما يتم التعبير عن كل مكون عن طريق رقم يطلق عليه
اسم فهرس ( Index ) , كما تبدأ مكونات المصفوفة بالرقم صفر ( 0 ) , وعند قيامك
بتحديد المصفوفة الخاصة بك فستجد أنها قد تظهر على النحو التالي :

Dim sStudentName(10) As String

تقوم هذه المصفوفة بتحديد أن المتغير sStudentName سوف يشتمل على أحد عشر مكونا ...
ولكن لماذا أحد عشر وليس عشر مكونات ؟؟؟؟

حيث أن المصفوفة المصفوفة تبدأ بالرقم صفر, فاعلم انه سيتم تضمين هذا المكون في
العدد الإجمالي للمكونات.... أي ستبدأ المصفوفة بالرقم صفر وتنتهي بالرقم ( 10 )
........

قد تسأل عن أهمية معرفة هذا ...؟؟ حسنا ......

عندما تعمل مع عناصر تحكم مثل مربعات القوائم ومربعات السرد ستكتشف أن كل مكون
موجود داخلها يعتبر جزءا من احد الأخطاء , ولتتمكن من معرفة عدد المكونات الموجودة
في عنصر واحد من عناصر التحكم تلك يمكنك استخدام ListCount الخاصة بعنصر التحكم
المطلوب , والتي تعمل على إرجاع عدد المكونات الموجودة داخل المصفوفة .... والآن
عند قيامك باستخدام هذه القيمة داخل نظام التكرار For – Next وذلك للتمكن من معالجة
معلومات المصفوفة مثلما يحدث في الكود التالي سيتم إخبارك بوجود الخطأ ( Subscript
) ...

For x = 0 To lststudents . ListCount

If sStudentName (x) = txtStudentName Then

MsgBox "The Student is Enrolled"

End If

Next

ولمزيد من التوضيح ... يرجع هذا الأمر إلى أنه قد تم تحديد المصفوفة sStudentName
بالعدد ( 10 ) وليس بالعدد ( 11 ) , ولتتمكن من تجنب ظهور مثل هذا الخطأ .. قم بطرح
واحد من المجموع الكلي الذي يتم إرجاعه من خاصية ListCount .... على النحو الموضح
في الكود التالي:

For x = 0 To lststudents . ListCount -1

If sStudentName (x) = txtStudentName Then

MsgBox "The Student is Enrolled"

End If

Next