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

عندما يكون من الصعب وصف الشفرة بالكلمات ، يتعين على معظم الناس استخدام الخيال للقيام بذلك. لهذا السبب ، يتم إهدار الطاقة الذهنية وزيادة خطر الأخطاء في تفسير الشفرة. سيظل الأشخاص المختلفون يدركون الكلمات بطريقتهم الخاصة ، مما يؤدي إلى حدوث ارتباك عند مناقشة الكود.
وكقاعدة عامة ، تصبح مثل هذه المناقشات أرضًا خصبة للأخطاء التي تظهر بسبب سوء الفهم ، وغالبًا ما يؤدي تصحيح هذه الأخطاء إلى ظهور أخطاء جديدة لنفس الأسباب. في النهاية ، حصلنا على رمز غير مفهوم لا يريد أحد أن يعمل معه.
المثال الذي لا يوصف
قد تعتقد أن هذا الرمز هو مجرد لغة مكتوبة. إذا كانت الشفرة تبدو بسيطة ، فيمكن قراءتها ووصفها وفهمها بسهولة. ومع ذلك ، هذا ليس هو الحال دائما.
يحدد القرار العام أدناه ما إذا كانت السنة سنة كبيسة.
(divisibleBy(4) and not divisibleBy(100)) or divisibleBy(400)
هذا هو رمز بسيط. يستدعي وظائف 3 مرات ، لديه 3 عوامل تشغيل (و ، أو ، لا) ومستويين من التعشيش.
لكنني أعتقد أنه إذا أعطيت لك ثانية واحدة لوصف هذه الخوارزمية باستخدام الكلمات ، فستواجه صعوبة.
ربما "سنة هي سنة كبيسة إذا كانت قابلة للقسمة على 4 وليس قابلة للقسمة على 100 ، أو قابلة للقسمة على 400"؟
المشكلة هي أنه في الكلمات ، على عكس الشفرة ، لا توجد أقواس. لذلك ، من الصعب وصف الشرط بالكلمات بشكل كافٍ وما إذا كانت كلمة "إما قابلة للقسمة على 400" تشير إلى "القسمة على 4" أو "غير قابلة للقسمة على 400". للتغلب على هذه المشكلة ، يمكنك تحديد أقواس بيدك أو توقف فترات زمنية أطول بين الشروط ، لكن احتمال حدوث خطأ سيظل كبيرًا.
اعادة بيع الكود الموصوف
يمكننا أولاً وصف الشروط بالكلمات ومن ثم تقليلها ، وجعلها واضحة وموجزة قدر الإمكان. لنبدأ مثل هذا:
"400 سنة هي حالة فريدة من نوعها. إذا كانت سنة قابلة للقسمة على 400 ، فهذه هي سنة كبيسة. 100 سنة هي أيضًا حالة فريدة. إذا كانت السنة قابلة للقسمة على 100 ، فإن هذه ليست سنة كبيسة ، ما لم تكن قابلة للقسمة على 400 ، لذلك تكون الأولوية للحالة الخاصة هي "400 عام". إذا لم تكن هناك حالات خاصة ، فإن هذا العام سيكون عامًا كبيرًا ، شريطة تقسيمها على 4 ".
يبدو واضحًا ، لكنه غير موجز ، لذلك سنقوم بتقصير النص قليلاً:
"إذا كانت السنة مقسومة على 400 ، فستكون سنة كبيسة. إذا تم تقسيمها على 100 ، فهذا سيكون عامًا عاديًا ، ولكن عندما يتم تقسيمه على 4 ، تكون هذه سنة كبيسة. "
إذا حولنا هذه الكلمات إلى رمز ، فسنحصل على شيء مثل التالي:
if divisbleBy(400): return LeapYear elif divisbleBy(100) return NormalYear elif divisbleBy(4): return LeapYear else: return NormalYear
النتائج
من الصعب فهم الكود أمر شائع لكل المبرمجين تقريبًا. سنساعد أنفسنا وزملائنا إذا كتبنا رمزًا موصوفًا بسهولة بالكلمات.
والأهم من ذلك ، كتابة التعليمات البرمجية بهذه الطريقة أسهل ، لأنه لا يوجد جهد عقلي دون جدوى. "الخدعة" هي أن الخوارزمية يتم وصفها أولاً بالكلمات التي سيتم استخدامها لاحقًا لكتابة الكود.
في العديد من المؤسسات ، بدأ بالفعل وصف الشفرة بالكلمات في اختبارات القبول أو قصص المستخدمين ، مما يمكن أن يحسن الإنتاجية.