لا تنسخ ولصق الكود. اكتبه. ؟

يمكن أن تساعدك كتابة التعليمات البرمجية على تطوير عقلية التعلم

تريد كسر بعض التعليمات البرمجية؟ قم بتغييره سريعًا قبل أن تفهم ما يفعله.

أنت الآن تمارس برمجة Cargo Cult - وهو أسلوب في تطوير البرامج حيث تتجاهل كيفية عمل جزء من التعليمات البرمجية وعلاقته بالكود المحيط به.

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

- برمجة Cargo Cult على ويكيبيديا

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

عندما يقرأ أحد المطورين جزءًا من التعليمات البرمجية التي لا يفهمونها ولا يزالون يغيرونها على أمل حل بعض المشكلات ، فإنهم يمارسون أيضًا برمجة Cargo Cult.

المشكلة ، في هذه الحالة ، ليست أن المطور ينسخ شيئًا ما. يمكن لأي شخص نسخ مقتطف من التعليمات البرمجية ، وفهمه ، والتعلم منه ، واستخدامه ، ولا يزال لديه مخاطر أقل من الآثار الجانبية غير المقصودة.

من ناحية أخرى ، تمثل برمجة Cargo Cult سوء فهم أساسي لخطوات مثبتة للتعلم من كود الآخرين.

إليك الطريقة الأكثر فعالية للتعلم في هذا السياق:

  1. اقرأ جزء من التعليمات البرمجية.
  2. فهم جميع ميزات اللغة المستخدمة هناك.
  3. فهم جميع ميزات المكتبات / الأطر التي يتم استخدامها هناك.
  4. تعلم أساسيات تلك المكتبات / أطر العمل.
  5. افهم ما يفعله كل سطر والغرض من تلك المكتبات / أطر العمل في سياق هذا الجزء من الكود.

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

واحدة من هذه التقنيات هي الممارسة المحظورة. إنه في الأساس حيث تتعلم من خلال "أداء مهارة واحدة مرارًا وتكرارًا ، مع كون التكرار هو المفتاح."

هذه ليست أفضل طريقة للتعلم. لقد ثبت أنه عندما تتعلم من خلال إدخال أشكال مختلفة من نفس المهارة ، ستتعلم بشكل أكثر كفاءة.

في هندسة البرمجيات، يمكننا الاستفادة كلا منعت والتداخل الممارسات تعلم أننا عندما اكتب رمز في سياقات مختلفة، بدلا من مجرد نسخ ولصق به.

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

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

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

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

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

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

خذ مقتطف HTML التالي ، على سبيل المثال:

عند تكرار هذا الرمز لخلق مدخلات جديدة، ونحن من المرجح أن ننسى لتغيير ل سمة من تسمية عنصر، والتي سوف كسر السلوك المقصود للمدخلات جديدة.

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

نفس الشيء يحدث مع الاختبارات. عندما نقوم بنسخ اختبار تم اجتيازه بالفعل بدلاً من إنشاء اختبار جديد من البداية ، فإننا نخاطر بعدم تغيير الرموز المميزة الضرورية التي من شأنها أن تتسبب في فشل هذا الاختبار.

في هذه الحالة ، على الرغم من ذلك ، يمكننا منع هذا الخطأ باستخدام Test Driven Development - وهي عقلية تعتمد على إنشاء اختبار فاشل أولاً ، ثم تغيير رمز التطبيق لجعله يمر. تتيح لنا هذه العقلية أن نكون واثقين من أننا أقل عرضة لفقدان شيء ما أو خلق إيجابيات خاطئة.

بدلاً من نسخ الكود دون فهمه ، تعلم من كود الآخرين وتدرب فوقه. سيؤدي ذلك إلى زيادة عائد الاستثمار التعليمي.

بعد كل شيء ، فإن أهم مورد للمطور هو الدماغ - وليس الأصابع.

شكرا للقراءة. إذا كانت لديك بعض التعليقات ، فتواصل معي على Twitter أو Facebook أو Github.