كل ما تريد معرفته عن أسلوب إزاحة

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

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

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

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

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



قراءة المقال الكامل على ويكيبيديا ←