علامات التبويب مقابل المسافات: نحو سقيفة دراجة أفضل

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

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

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

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

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

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

كلف Linus Torvalds بعلامات جدولة عريضة مكونة من 8 أحرف وحدًا لطول سطر 80 حرفًا لرمز مصدر kernel Linux ، ليس لأنه سادي ولكن لأنه يجعل المساهمين يمتنعون عن كتابة رمز متداخل بعمق. كود يتدفق عموديا وأقل تداخلا هو أسهل بكثير من قراءة هذا:

Suuuuure ما يمكنك!

لذلك على الرغم من استخدام علامات التبويب ، أجبر Linus الجميع على استخدام عرض مسافة بادئة ثابت. لقد تجاهل التفضيلات الشخصية لأن العرض الثابت خدم غرضًا مهمًا: الحفاظ على جودة الكود عالية. ربما يكون قد فرض تكليفات ذات 8 أحرف مع مسافات من شأنها أن تجعل من الصعب الالتفاف. لماذا اختار علامات التبويب بدلاً من ذلك؟

قد يكون استخدام علامات التبويب لرمز Linux منطقيًا من الناحية التاريخية. يعتبر Linux Linux أحد أكبر مشاريع المصادر المفتوحة التي تتكون من ملايين أسطر التعليمات البرمجية. يمكن أن توفر علامات التبويب أوقات بناء أسرع وتخزينًا أكثر فاعلية في الأيام الخوالي من وحدات المعالجة المركزية بسرعة 66 ميجاهرتز مع ذاكرة 4 ميجابايت ومحركات أقراص EIDE الثابتة.

أو ربما يكون Linus قد اختفى مع الإعدادات الافتراضية ، وهي علامات تبويب عريضة مؤلفة من 8 أحرف لإعادة المسافة البادئة وتعديل الحجج الخاصة بها لاحقًا. لأنه حتى لو افترضنا وجود 3 مسافات بحد أقصى لكل سطر من التعليمات البرمجية في شفرة Linux kernel الحالية ، فإن استخدام علامات التبويب سيصل إلى توفير 100 ميغابايت. هذا ، كما تعلم ، أقل من مقدار علامة تبويب المتصفح هذه في ذاكرة جهاز الكمبيوتر الخاص بك. لذا ، لا توفر لك علامات الجدولة ميزة تقنية حقيقية بعد الآن ، حتى في أكبر المشاريع.

تفقد البيانات الوصفية باستخدام علامات التبويب

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

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

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

قاعدة "لا قاعدة"

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

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

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

ملاحظة لا ، لست مضطرًا للضغط على المساحة عدة مرات حتى تضع مسافة بادئة للمسافات.