تمرين - إزالة كتل التعليمات البرمجية من عبارات if

مكتمل

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

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

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

إنشاء مثال على عبارة if التي تستخدم كتلة التعليمات البرمجية

  1. تأكد من وجود ملف Program.cs فارغ مفتوح في Visual Studio Code.

    إذا لزم الأمر، افتح Visual Studio Code، ثم أكمل الخطوات التالية لإعداد ملف Program.cs في المحرر:

    1. في القائمة ملف ، حدد فتح مجلد.

    2. استخدم مربع الحوار فتح مجلد للانتقال إلى المجلد CsharpProjects ثم فتحه.

    3. في لوحة Visual Studio Code EXPLORER، حدد Program.cs.

    4. في قائمة Visual Studio Code Selection ، حدد Select All، ثم اضغط على مفتاح Delete.

  2. اكتب التعليمات البرمجية التالية في محرر Visual Studio Code:

    bool flag = true;
    if (flag)
    {
        Console.WriteLine(flag);
    }
    
  3. احفظ ملف التعليمات البرمجية، ثم استخدم Visual Studio Code لتشغيل التعليمات البرمجية الخاصة بك.

    أدخل dotnet run من موجه الأوامر Terminal لتشغيل التعليمات البرمجية الخاصة بك.

  4. تحقق من رؤية الإخراج التالي:

    True
    

    تمثل التعليمات البرمجية نقطة بداية جيدة، ولكن لديك كتلة تعليمات برمجية تتضمن سطرا واحدا من التعليمات البرمجية. في هذه الحالة، هل تعريف كتلة التعليمات البرمجية ضروري؟

إزالة الأقواس المتعرجة

تنفذ التعليمات البرمجية أعلاه كتلة التعليمات البرمجية عندما flag تكون true. نظرا لأن كتلة التعليمات البرمجية هذه تحتوي على سطر تعليمة برمجية واحد، فلديك خيار إزالة الأقواس المتعرجة.

  1. تحديث التعليمات البرمجية الخاصة بك في محرر التعليمات البرمجية Visual Studio كما يلي:

    bool flag = true;
    if (flag)
        Console.WriteLine(flag);
    

    إشعار

    لا تؤدي إزالة الأقواس المتعرجة إلى تغيير حقيقة أن Console.WriteLine(flag); هي كتلة التعليمات البرمجية if للبيان.

  2. احفظ ملف التعليمات البرمجية، ثم استخدم Visual Studio Code لتشغيل التعليمات البرمجية الخاصة بك.

  3. لاحظ أن الإخراج هو نفسه كما كان من قبل.

    يجب أن لا تزال ترى الإخراج التالي:

    True
    

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

فحص قابلية قراءة نموذج من سطر واحد إذا كانت العبارات

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

نظرا لأن if كل من العبارة Console.WriteLine() واستدعاء الأسلوب قصيران، فقد تميل إلى دمجهما على سطر واحد. بعد كل شيء، يسمح لك بناء جملة if C# بدمج العبارات بهذه الطريقة.

  1. تحديث التعليمات البرمجية الخاصة بك في محرر التعليمات البرمجية Visual Studio كما يلي:

    bool flag = true;
    if (flag) Console.WriteLine(flag);
    
  2. احفظ ملف التعليمات البرمجية، ثم استخدم Visual Studio Code لتشغيل التعليمات البرمجية الخاصة بك.

  3. لاحظ أن الإخراج لا يزال كما هو.

  4. خذ دقيقة للنظر في إمكانية قراءة التعليمات البرمجية.

    تخيل نموذجي التعليمات البرمجية السابقين المتداخلين داخل قسم أكبر من التعليمات البرمجية. قد يؤدي الجمع بين عبارات التعليمات البرمجية (كما فعلت في الخطوة 4) إلى صعوبة القراءة.

    عند تنفيذ عبارة if تتضمن كتلة تعليمات برمجية أحادية العبارة، توصي Microsoft بمراعاة هذه الاصطلاحات:

    • لا تستخدم أبدا نموذج سطر واحد (على سبيل المثال: if (flag) Console.WriteLine(flag)؛
    • يتم قبول استخدام الأقواس دائما، ومطلوب إذا كانت أي كتلة من عبارة if/else if/.../else المركبة تستخدم أقواسا أو إذا كان نص عبارة واحدة يمتد عبر أسطر متعددة.
    • قد يتم حذف الأقواس فقط إذا تم وضع نص كل كتلة مرتبطة ببيان إذا/آخر إذا/.../else مركب على سطر واحد.
  5. لفحص تأثير قابلية القراءة لبنى if-elseif-else الأكبر، قم بتحديث التعليمات البرمجية الخاصة بك كما يلي:

    string name = "steve";
    if (name == "bob") Console.WriteLine("Found Bob");
    else if (name == "steve") Console.WriteLine("Found Steve");
    else Console.WriteLine("Found Chuck");
    
  6. احفظ ملف التعليمات البرمجية، ثم استخدم Visual Studio Code لتشغيل التعليمات البرمجية الخاصة بك.

    عند تشغيل التعليمات البرمجية، يجب أن تنتج الإخراج التالي:

    Found Steve
    

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

  7. قارن التعليمات البرمجية التي قمت بتشغيلها للتو مع التعليمات البرمجية التالية:

    string name = "steve";
    
    if (name == "bob")
        Console.WriteLine("Found Bob");
    else if (name == "steve") 
        Console.WriteLine("Found Steve");
    else
        Console.WriteLine("Found Chuck");
    

    لاحظ مدى سهولة قراءة نموذج التعليمات البرمجية الثاني.

خلاصة

فيما يلي بعض الأشياء المهمة التي يجب تذكرها حول if كتل التعليمات البرمجية للبيانات وقابلية القراءة:

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