سؤال

ما هي الميزة، إن وجدت، التي يوفرها تنسيق كود C على النحو التالي:

while(lock_file(lockdir)==0)
    {
    count++;
    if(count==20)
        {
        fprintf(stderr,"Can't lock dir %s\n",lockdir);
        exit(1);
        }
    sleep(3);
    }
if(rmdir(serverdir)!=0)
    {
    switch(errno)
        {
        case EEXIST:
            fprintf(stderr,"Server dir %s not empty\n",serverdir);
            break;
        default:
            fprintf(stderr,"Can't delete dir %s\n",serverdir);
        }
    exit(1);
    }
unlock_file(lockdir);

مقابل شيء أكثر نموذجية مثل

while(lock_file(lockdir)==0) {
    count++;
    if(count==20) {
        fprintf(stderr,"Can't lock dir %s\n",lockdir);
        exit(1);
    }
    sleep(3);
}
if(rmdir(serverdir)!=0) {
    switch(errno) {
        case EEXIST:
            fprintf(stderr,"Server dir %s not empty\n",serverdir);
            break;
        default:
            fprintf(stderr,"Can't delete dir %s\n",serverdir);
    }
    exit(1);
}
unlock_file(lockdir);

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

الميزة الوحيدة التي يمكنني رؤيتها هي أن تكون مختلفًا وتترك بصمات أصابعك على الكود الذي كتبته.

لاحظت أن تنسيق vim يجب أن يتم لفه يدويًا للتعامل مع الحالة العلوية.

هل كانت مفيدة؟

المحلول

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

نصائح أخرى

المثال الأعلى يُعرف باسم "أسلوب الحداد الأبيض". إدخال ويكيبيديا على أنماط المسافة البادئة يشرح العديد من الأساليب مع مزاياها وعيوبها.

لا شئ.المسافة البادئة ومعايير الترميز الأخرى هي مسألة تفضيل.

المسافة البادئة التي تراها هي أسلوب الحدادين.وقد ورد ذلك في الطبعة الأولى من اكتمال الكود باسم "حدود كتلة البداية والنهاية".الحجة الأساسية لهذا الأسلوب هي أنه في لغات مثل C (و Pascal) an if يحكم إما عبارة واحدة أو كتلة.وبالتالي يجب أن تظهر الكتلة بأكملها، وليس فقط محتوياتها، تابعة للكتلة if-البيان عن طريق وضع مسافة بادئة باستمرار.

XXXXXXXXXXXXXXX       if (test)
   XXXXXXXXXXXX           one_thing();

XXXXXXXXXXXXXXX       if (test)
   X                     {
   XXXXX                 one_thing();
   XXXXX                 another_thing();
   X                     }

عندما قرأت هذا الكتاب لأول مرة (في التسعينيات) وجدت أن حجة "حدود بداية النهاية" مقنعة، على الرغم من أنني لم أحبها كثيرًا عندما وضعتها موضع التنفيذ (في باسكال).أنا أحب ذلك بشكل أقل في لغة C وأجد أنه من المربك قراءته.انتهى بي الأمر باستخدام ما يسميه ستيف ماكونيل "محاكاة الكتل النقية" (صن جافا ستايل, ، وهو تقريبا ك&ر).

XXXXXXXXXXXXXX X      if (test) {
   XXXXXX                one_thing();
   XXXXXX                another_thing();
X                     }

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

IF test THEN
   oneThing;
   anotherThing
END

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

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

if (x == 0) 
{
  if (y == 2)
  {
    if (z == 3)
    {
       do_something (x);
    }
  }
}

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

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

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

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

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

لكي يتمتع هذا التنسيق "بميزة"، نحتاج حقًا إلى بعض أكواد C المكافئة بتنسيق آخر للمقارنة به!

في مكان عملي، يتم استخدام نظام المسافة البادئة هذا لتسهيل إنشاء آلية محرر قابلة للطي محليًا.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top