مبادئ برمجية يجب على كل مبرمج معرفتها
تعَلّم الكثير من مطوري البرامج البرمجة بدون أن يقوموا بتعلم مبادئها وأُسسها التي تجعل من الشفرة البرمجية أكثر ترتيبًا و قابلية للقراءة والفهم لذلك تبدو الكثير من الشفرات معقدة وصعبة الفهم ومن المرهق مراجعتها وإصلاح أخطائها.
لو قدمنا إليك رواية غير مكتملة وطلبنا منك أن تقوم بإتمامها، سيتوجب عليك بداية أن تفهم القصة كاملة بشكل عام ومن ثم تتعرف على شخوص هذه الرواية و أدوارهم في فصولها، وأي شخصية هي الرئيسية التي ستكمل معك المسيرة لنهاية الرواية و أي شخصية سيكون دورها محدود ويظهر في فصول قليلة وينتهي مبكرًا، كما تحتاج لمعرفة ما يربط الشخصيات و كذلك أجزاء القصة بعضها ببعض.
البرمجة تشبه إلى حد كبير إكمال رواية لمبرمج آخر، فالمتغيرات هي شخصيات قصتك وينبغي عليك فهمها ومعرفة دورها وترابطها مع الوظائف المختلفة المتواجدة في الشفرة لتتمكن من إكمالها وإضافة سطورك بكل سهولة وإتقان. ولو افتقدت الشفرة إلى الوضوح ستتحول إلى قصة رعب أو كابوس مخيف يصعب عليك التعامل معه.
من السهل كتابة شفرة برمجية لكن كتابة شفرة مثالية أو ممتازة أو ما يطلق عليها (Clean Code) قد يكون تحديًا بعض الشيء، قد تكون الشفرة سيئة في نواحٍ عدة، فقد تكون فوضوية مليئة بالمتغيرات الزائدة عن الحاجة، أو قد يفسد تماسكها تعديل بسيط فيها، أو لم تخضع للتصميم المناسب فتنجح أثناء اختبارها مرة واحدة وتفشل عند اختبارها بمدخلات مختلفة.
إليك بعض المبادئ البرمجية التي من المهم اتباعها أثناء عملك البرمجي، لتساعدك أن تصبح مبرمجاً أفضل، وتحسن مستوى شفرتك وجودتها و وضوحها في محاولة إلى الوصول للشفرة المثالية (إن صح التعبير):
افصل المهام ولا تجمعها بمكان واحد
حاول قدر المستطاع ان تجعل كل دالة أو كل صنف أول كل ملف يقوم بعمل وظيفة واحدة، لا تكدس الوظائف بمكان واحد، فصل الوظائف يقلل من حجم الشفرة و يسهل على المبرمج متابعة الشفرة وفهمها وبالتالي يسهل عملية القيام بصيانتها والوصول بسلاسة لمكان الأخطاء و إصلاحها. كما يجب مراعاة أن تكون الوظائف غير معتمدة على بعضها البعض على سبيل المثال الجزء من الشفرة الذي يتعامل مع قاعدة البيانات، لا يحتاج بالضرورة إلى أن يعرف كيفية عرض هذه البيانات على المتصفح، فكل وظيفة تقوم بعملها بمعزل عن طريقة عمل الأخرى، بحيث أنه عندما يتم تعديل أحدها لن نضطر لتعديل الأخرى معها. ينتج عن ذلك شفرة سهلة التعديل والإصلاح.
اجعلها بسيطة !
اجعل شفرتك بسيطة وعامة، لا تحاول أن تعقد الأمور وتظهر بمظهر المبرمج المتمكن بكتابة أكواد معقدة فأنت لا تقوم بالبرمجة لإثارة إعجاب أحدٍ ما، إذا كان بالإمكان كتابة المطلوب في سطرٍ واحد فلتقم بذلك!. اجعل أسماء المتغيرات واضحة و ذات معنى واستفد من المكتبات الجاهزة المتوفرة، لأن هذا هو أحد طرق تعلم البرمجة
اجعل شفرتك قابلة لإعادة الاستخدام على نحو يسهل عليك (وعلى المبرمجين الآخرين) الاستفادة منها في عدة برامج بحيث تضيف عليها ما تحتاجه بدون تعديل على أساس الشفرة الأصلية. حاول أن تكتب الأسطر الضرورية فقط وتجنب التفرع لحالات من البديهي أنها لن تحدث، أو أن تضيف حلولًا لمشاكل غير موجودة!، وتذكر أن شفرتك ستحتاج للصيانة فكلما كانت أسطرك البرمجية أكثر كلما زادت الحاجة إلى اختبارها وصيانتها.
في حال احتاجت شفرتك إلى أسطر ملاحظات طويلة لشرحها و توضيح ما تقوم به، فقد يعود ذلك إلى كونها معقدة بعض الشيء، فيستلزم ذلك منك مراجعتها ومحاولة إعادة كتابتها بطريقة أسهل وأكثر وضوحًا. قد يكون حدوث ذلك غالبًا عائدًا إلى أخطاء في عملية التصميم واختيار النموذج المناسب لمشكلتك البرمجية أو اختيار خوارزمية غير مناسبة تمامًا لما تقوم به.
اكتب الملاحظات على ما هو ضروري فقط
التعليقات والملاحظات على الشفرة مهمة، ولكن لا يجب الإكثار منها أو وضعها على كل جزء منها، حاول اختيار المواضع المناسبة التي قد تبدو الشفرة فيها غير واضحة أو لتبرير وضع شفرة غيراعتيادية، يفضل دائماً أن يكون هناك ملاحظة في بداية الشفرة البرمجية لتوضّح الهدف منها ومحتوياتها ومن قام بكتابتها وتاريخ كتابتها، ستسهل هذه الملاحظة عليك فهم الشفرة واستيعابها عند العودة إليها بعد تركها لمدة من الزمن بدلًا من أن تضطر لقراءتها كاملة وتتبعها سطرًا بسطر لتفهمها من جديد.
اختبر شفرتك وتأكد من جودتها
قم بإجراء العديد من الاختبارات والتجارب على شفرتك، واستبدل الاختبارات اليدوية ببرامج الاختبارات الآلية، تعلّم هذه الأنظمة جيداً واستعملها كثيرًا فكلما زاد عدد الاختبارات التي تقوم بها آليًا على شفرتك زادت ثقتك من جودتها حتى بعد إجراء تغييرات عليها.
لا تكرر شفرتك
إذا كانت لديك قيمة متغير تتكرر أكثر من مرة في شفرتك فاجعلها ثابتاً عاماً يمكن الوصول له من أكثر من مكان، و إذا كان لديك مجموعة أسطر تتكرر أكثر من مرة في مواضع عدة فكر في فصلها كدالة مستقلة تقوم باستخدامها كل ما احتجت إليها.
قم بتنقيح شفرتك
ليس من الضروري أن تكون أول نسخة تقوم بكتابتها من شفرتك مثالية، قد تضطر إلى تنقيحها أكثر من مرة، فالشفرة البرمجية تتطور باستمرار فمن الطبيعي مراجعة أعمالك ومحاولة تحسينها قدر المستطاع، أو حتى إعادة كتابتها. وذلك ليس عيبًا على الإطلاق، فابحث عن ما يمكن اختصاره أو تحسينه وجعله أكثر فاعلية مع محافظتك بالطبع على نتائجك مطابقة لما هو مطلوب منك.
بغض النظر عن جودتك كمبرمج، في البرمجة وظيفتك لا تقتصر على كتابة شفرة تعمل بشكل جيد فقط. دائمًا ضع في اعتبارك أنك تكتب شفرتك للمبرمجين الآخرين وليس لآلة، وأن شفرتك غير منقوشة على حجر لذلك يجب أن تكون مرنة بسيطة وقابلة للتطوير والتعديل والإضافة. وتذكر مبرمج جيد يعني شفرة جيدة قابلة للقراءة.