إنشاء تعليمة برمجية باستخدام اقتراحات إكمال التعليمات البرمجية ل GitHub Copilot

مكتمل

يمكن أن يوفر GitHub Copilot اقتراحات إكمال التعليمات البرمجية للعديد من لغات البرمجة ومجموعة واسعة من أطر العمل، ولكنه يعمل بشكل جيد بشكل خاص مع Python وJavaScript وTypeScript وRupe وGo وC# وC++. يتم إنشاء إكمال سطر التعليمات البرمجية استنادا إلى سياق التعليمات البرمجية التي تكتبها. يمكنك قبول الاقتراحات المقدمة من GitHub Copilot أو رفضها أو قبولها جزئيا.

يوفر GitHub Copilot طريقتين لإنشاء إكمال سطر التعليمات البرمجية:

  • من تعليق: يمكنك إنشاء إكمال سطر التعليمات البرمجية عن طريق كتابة تعليق يصف التعليمات البرمجية التي تريد إنشاؤها. يوفر GitHub Copilot اقتراحات إكمال التعليمات البرمجية استنادا إلى التعليق الذي تكتبه.

  • من التعليمات البرمجية: يمكنك إنشاء إكمال سطر التعليمات البرمجية عن طريق بدء سطر التعليمات البرمجية، أو بالضغط على Enter بعد سطر التعليمات البرمجية المكتملة. يوفر GitHub Copilot اقتراحات إكمال التعليمات البرمجية استنادا إلى التعليمات البرمجية التي تكتبها.

استخدام GitHub Copilot لإنشاء إكمال سطر التعليمات البرمجية من تعليق

ينشئ GitHub Copilot اقتراحات إكمال التعليمات البرمجية استنادا إلى التعليق والسياق الحالي لتطبيقك.

يمكنك استخدام التعليقات لوصف قصاصات التعليمات البرمجية والأساليب وبنى البيانات وعناصر التعليمات البرمجية الأخرى.

لنفترض أن لديك القصاصة البرمجية التالية:


namespace ReportGenerator;

class QuarterlyIncomeReport
{
    static void Main(string[] args)
    {
        // create a new instance of the class
        QuarterlyIncomeReport report = new QuarterlyIncomeReport();

        // call the GenerateSalesData method

        // call the QuarterlySalesReport method
        
    }

    public void QuarterlySalesReport()
    {

        Console.WriteLine("Quarterly Sales Report");
    }
}    

على سبيل المثال، يمكن استخدام التعليق التالي لإنشاء بنية بيانات:


// public struct SalesData. Include the following fields: date sold, department name, product ID, quantity sold, unit price

ينشئ GitHub Copilot اقتراحا واحدا أو أكثر لإكمال التعليمات البرمجية استنادا إلى تعليق التعليمات البرمجية وملفات التعليمات البرمجية المفتوحة في المحرر.

لقطة شاشة تعرض إكمال التعليمات البرمجية لتعليق يصف بنية البيانات.

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

عندما ينشئ GitHub Copilot أكثر من اقتراح واحد، يمكنك التنقل بين الاقتراحات عن طريق تحديد الأسهم اليسرى أو اليمنى (> أو <) الموجودة إلى يسار الزر قبول . يتيح لك ذلك مراجعة الاقتراح الذي يناسب احتياجاتك وتحديده.

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

إذا لم يكن أي من الخيارات المقترحة مشابها لما تحتاجه، فهناك أمران يمكنك تجربتهما. لفتح علامة تبويب محرر جديدة تحتوي على قائمة اقتراحات أخرى، اضغط على المفاتيح Ctrl + Enter. تفتح تركيبة مفتاح التشغيل السريع هذه علامة تبويب جديدة تحتوي على ما يصل إلى 10 اقتراحات أخرى. يتبع كل اقتراح زر يمكنك استخدامه لقبول الاقتراح. يتم إغلاق علامة التبويب تلقائيا بعد قبول اقتراح. الخيار الآخر هو الضغط على مفتاح Esc لتجاهل الاقتراحات والمحاولة مرة أخرى. يمكنك ضبط تعليق التعليمات البرمجية لتوفير المزيد من السياق ل GitHub Copilot للعمل معه.

إشعار

يمكن أن يقترح GitHub Copilot أحيانا اقتراحا على مراحل. إذا حدث ذلك، يمكنك الضغط على مفتاح الإدخال Enter لمشاهدة مراحل إضافية من الاقتراح بعد الضغط على المفتاح Tab.

لقبول بنية بيانات مقترحة، اضغط على المفتاح Tab أو حدد قبول.

لتعديل أنواع بيانات الحقل، قم بتحديث التعليمات البرمجية الخاصة بك كما يلي:

public struct SalesData
{
    public DateOnly dateSold;
    public string departmentName;
    public int productID;
    public int quantitySold;
    public double unitPrice;
}

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

استخدام GitHub Copilot لإنشاء إكمال سطر التعليمات البرمجية من تعليق

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

استخدم الخطوات التالية لإكمال هذا القسم من التمرين:

  1. في ملف Program.cs ، قم بإنشاء سطرين فارغين من التعليمات البرمجية Main أسفل الأسلوب .

  2. لإنشاء بنية بيانات يمكن استخدامها لإنشاء بيانات اختبار، قم بإنشاء تعليق التعليمات البرمجية التالي، ثم اضغط على Enter:

    // public struct SalesData. Include the following fields: date sold, department name, product ID, quantity sold, unit price
    

    ينشئ GitHub Copilot اقتراحا واحدا أو أكثر لإكمال التعليمات البرمجية استنادا إلى تعليق التعليمات البرمجية وأي تعليمات برمجية موجودة يعثر عليها في تطبيقك.

  3. خذ دقيقة لمراجعة اقتراحات إكمال التعليمات البرمجية التي يوفرها GitHub Copilot.

    إشعار

    إذا كان GitHub Copilot ينشئ اقتراحات لأسلوب بدلا من بنية بيانات، فاكتب سلسلة عامة وانتظر تحديث اقتراح إكمال التعليمات البرمجية. يستخدم GitHub Copilot المعلومات الإضافية لتحسين اقتراحاته.

    لقطة شاشة تعرض إكمال التعليمات البرمجية لتعليق يصف بنية البيانات.

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

    عندما ينشئ GitHub Copilot أكثر من اقتراح واحد، يمكنك التنقل بين الاقتراحات عن طريق تحديد الأسهم اليسرى أو اليمنى (> أو <) الموجودة إلى يسار الزر قبول . يتيح لك ذلك مراجعة الاقتراح الذي يناسب احتياجاتك وتحديده.

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

    إذا لم يكن أي من الخيارات المقترحة مشابها لما تحتاجه، فهناك أمران يمكنك تجربتهما. لفتح علامة تبويب محرر جديدة تحتوي على قائمة اقتراحات أخرى، اضغط على المفاتيح Ctrl + Enter. تفتح تركيبة مفتاح التشغيل السريع هذه علامة تبويب جديدة تحتوي على ما يصل إلى 10 اقتراحات أخرى. يتبع كل اقتراح زر يمكنك استخدامه لقبول الاقتراح. يتم إغلاق علامة التبويب تلقائيا بعد قبول اقتراح. الخيار الآخر هو الضغط على مفتاح Esc لتجاهل الاقتراحات والمحاولة مرة أخرى. يمكنك ضبط تعليق التعليمات البرمجية لتوفير المزيد من السياق ل GitHub Copilot للعمل معه.

    إشعار

    يمكن أن يقترح GitHub Copilot أحيانا اقتراحا على مراحل. إذا حدث ذلك، يمكنك الضغط على مفتاح الإدخال Enter لمشاهدة مراحل إضافية من الاقتراح بعد الضغط على المفتاح Tab.

  4. لقبول بنية بيانات مقترحة، اضغط على المفتاح Tab أو حدد قبول.

  5. لتعديل أنواع بيانات الحقل، قم بتحديث التعليمات البرمجية الخاصة بك كما يلي:

    public struct SalesData
    {
        public DateOnly dateSold;
        public string departmentName;
        public int productID;
        public int quantitySold;
        public double unitPrice;
    }
    

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

  6. إنشاء سطرين فارغين من التعليمات البرمجية SalesData أسفل بنية البيانات.

  7. لإنشاء أسلوب يقوم بإنشاء بيانات الاختبار باستخدام SalesData بنية البيانات، اكتب تعليق التعليمات البرمجية التالي ثم اضغط على Enter:

    /* the GenerateSalesData method returns 1000 SalesData records. It assigns random values to each field of the data structure */
    
  8. خذ دقيقة لمراجعة اقتراحات إكمال التعليمات البرمجية التي يوفرها GitHub Copilot.

    لاحظ أن GenerateSalesData الأسلوب مصمم لإرجاع صفيف من SalesData الكائنات. ينشئ الأسلوب 1000 سجل من بيانات الاختبار، مع تعيين قيم عشوائية لكل حقل من SalesData حقول بنية البيانات.

    لقطة شاشة تعرض إكمال التعليمات البرمجية لتعليق يصف أسلوبا.

    يجب عليك دائما مراجعة الاقتراحات المقترحة من قبل GitHub Copilot وGitHub Copilot Chat، حتى عندما تبدو صحيحة.

    إشعار

    إذا اقترح GitHub Copilot سطر تعليمات برمجية واحد بدلا من أسلوب مكتملGenerateSalesData، فاضغط على Ctrl + Enter لفتح علامة التبويب GitHub Copilot Suggestions. راجع الاقتراحات الموجودة في علامة التبويب الجديدة. في الخطوة التالية، استخدم الزر "قبول الاقتراح #" لقبول الاقتراح. يقدم GitHub Copilot اقتراحات بشكل متزايد في بعض الأحيان. على الرغم من أنه يمكنك قبول إكمال التعليمات البرمجية بشكل متزايد، فمن الأفضل استخدام علامة التبويب GitHub Copilot Suggestions لمراجعة الاقتراح الكامل قبل اتخاذ قرار بقبوله أو تجاهله.

  9. قم بالتمرير عبر اقتراحات إكمال التعليمات البرمجية وحدد أفضل تطابق للمتطلبات.

  10. لقبول إكمال التعليمات البرمجية، اضغط على المفتاح Tab.

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

  11. لتحديد سنة واحدة للتعليمات البرمجية المستخدمة لإنشاء DateSold الحقل، قم بتحديث سطر التعليمات البرمجية كما يلي:

    salesData[i].DateSold = new DateOnly(2023, random.Next(1, 13), random.Next(1, 29));
    
  12. إذا لزم الأمر، اضبط أسطر التعليمات البرمجية الأخرى لمطابقة قصاصة التعليمات البرمجية التالية:

    public SalesData[] GenerateSalesData()
    {
        SalesData[] salesData = new SalesData[1000];
        Random random = new Random();
    
        for (int i = 0; i < salesData.Length; i++)
        {
            salesData[i].dateSold = new DateOnly(2023, random.Next(1, 13), random.Next(1, 29));
            salesData[i].departmentName = "Department " + random.Next(1, 11);
            salesData[i].productID = random.Next(1, 101);
            salesData[i].quantitySold = random.Next(1, 101);
            salesData[i].unitPrice = random.NextDouble() * 100;
        }
    
        return salesData;
    }
    

القدرة على إنشاء التعليمات البرمجية من تعليقات التعليمات البرمجية هي ميزة قوية من GitHub Copilot. مع تعليقين فقط، تمكنت من إنشاء بنية بيانات وطريقة تنشئ بيانات اختبار.

استخدام GitHub Copilot لإنشاء إكمال سطر التعليمات البرمجية

يمكن ل GitHub Copilot إنشاء إكمال سطر التعليمات البرمجية استنادا إلى التعليمات البرمجية التي تدخلها. يمكنك إنشاء إكمال سطر التعليمات البرمجية بطريقتين:

  • ابدأ بإدخال سطر التعليمات البرمجية، ثم انتظر GitHub Copilot لاقتراح الإكمال التلقائي لخط التعليمات البرمجية غير المكتمل.
  • أدخل سطر تعليمة برمجية كاملا، واضغط على المفتاح Enter ، ثم انتظر حتى يقترح GitHub Copilot الإكمال التلقائي لخط التعليمات البرمجية التالي.

إشعار

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

في هذا الجزء من التمرين، يمكنك العمل على QuarterlySalesReport الأسلوب .

فيما يلي المهام التي تحتاج إلى إكمالها:

  • قم بتحديث منشئ الأسلوب بمعلمة تقبل مجموعة SalesData الكائنات الخاصة بك.
  • استخدم GitHub Copilot لإنشاء إكمالات سطر التعليمات البرمجية التي تعالج بيانات المبيعات للتقرير ربع السنوي.
  • قم بتشغيل التطبيق ومراجعة تقرير المبيعات ربع السنوي.

استخدم الخطوات التالية لإكمال هذا القسم من التمرين:

  1. تحديث منشئ الأسلوب على QuarterlySalesReport النحو التالي:

    public void QuarterlySalesReport(SalesData[] salesData)
    
  2. خذ دقيقة للنظر في التعليمات البرمجية التي تحتاج إلى تطويرها.

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

    • التكرار من خلال salesData المجموعة.
    • حساب قيمة كل عملية بيع استنادا إلى الكمية المباعة وسعر الوحدة.
    • استخدم تاريخ المبيعات لتحديد ربع السنة الذي تنتمي إليه عملية البيع.
    • جمع المبيعات لكل ربع عام.
    • اكتب تقريرا عن المبيعات حسب ربع السنة.

    أحد الخيارات هو البدء في إدخال التعليمات البرمجية لحلقة foreach ثم معرفة ما يقترحه GitHub Copilot.

  3. في QuarterlySalesReport الأسلوب ، قم بإنشاء سطر تعليمة برمجية جديد في أعلى كتلة التعليمات البرمجية.

    يجب أن يكون هناك سطر تعليمة برمجية فارغ واحد على الأقل بين سطر التعليمات البرمجية الجديد وخط التعليمات البرمجية Console.WriteLine()الذي يحتوي على .

  4. لإنشاء إكمال سطر التعليمات البرمجية، اكتب foreach ( ثم انتظر GitHub Copilot لاقتراح خيارات إكمال سطر التعليمات البرمجية.

  5. راجع إكمال التعليمات البرمجية المقترحة من قبل GitHub Copilot.

    لقطة شاشة تعرض إكمال التعليمات البرمجية لحلقة foreach.

    إكمال التعليمات البرمجية المقترح ليس ما تريده.

    على الرغم من أن GitHub Copilot يقترح foreach حلقة تتكرر من خلال salesData، لا يوجد تحليل أو حسابات داخل الحلقة. تتضمن Console.WriteLine التعليمات البرمجية المقترحة عبارات لا تريدها أو تحتاجها.

  6. خذ دقيقة للنظر في سبب اقتراح Console.WriteLine GitHub Copilot عبارات.

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

    التعليمات البرمجية التي يراها GitHub Copilot داخل أسلوبك هي عبارة Console.WriteLine . مع عدم توفر سياق آخر ضمن الأسلوب ولا توجد أساليب مشابهة في قاعدة التعليمات البرمجية الخاصة بك للرسم منها، يخلص GitHub Copilot إلى أنك قد ترغبConsole.WriteLine في عبارات داخل الحلقة foreach .

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

  7. لتنظيف التعليمات البرمجية قبل محاولة GitHub Copilot أخرى، أكمل الخطوات التالية:

    • إلغاء إكمال التعليمات البرمجية المقترحة foreach ( .
    • احذف العبارة الجزئية foreach ( التي أدخلتها.
    • حذف العبارة Console.WriteLine من الأسلوب الخاص بك QuarterlySalesReport .

    الآن يجب أن تكون مستعدا لتجربة GitHub Copilot مرة أخرى.

  8. تأكد من أن أسلوبك QuarterlySalesReport يبدو مشابها للتعليمات البرمجية التالية:

    public void QuarterlySalesReport(SalesData[] salesData)
    {
    
    
    }
    
  9. ضع المؤشر على سطر تعليمة برمجية فارغ داخل QuarterlySalesReport الأسلوب، ثم اضغط على مفتاح الإدخال Enter.

    قد يستغرق الأمر لحظة حتى يقوم GitHub Copilot بإنشاء إكمال التعليمات البرمجية المقترحة.

  10. خذ دقيقة لمراجعة إكمال التعليمات البرمجية المقترحة.

    هام

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

    لقطة شاشة تعرض اقتراح إكمال التعليمات البرمجية الذي يعالج البيانات لتقرير.

    يمكنك التنقل بين الاقتراحات عن طريق تحديد > أو <.

    لاحظ أن إكمال التعليمات البرمجية المقترحة يتكرر من خلال بيانات المبيعات وينفذ حسابات مبيعات ربع سنوية.

  11. لقبول إكمال التعليمات البرمجية المقترحة، اضغط على المفتاح Tab.

    يحسب إكمال التعليمات البرمجية المقترحة الدخل ربع السنوي ويعرضه استنادا إلى بيانات المبيعات.

    // create a dictionary to store the quarterly sales data
    Dictionary<string, double> quarterlySales = new Dictionary<string, double>();
    
    // iterate through the sales data
    foreach (SalesData data in salesData)
    {
        // calculate the total sales for each quarter
        string quarter = GetQuarter(data.dateSold.Month);
        double totalSales = data.quantitySold * data.unitPrice;
    
        if (quarterlySales.ContainsKey(quarter))
        {
            quarterlySales[quarter] += totalSales;
        }
        else
        {
            quarterlySales.Add(quarter, totalSales);
        }
    }
    
    // display the quarterly sales report
    Console.WriteLine("Quarterly Sales Report");
    Console.WriteLine("----------------------");
    foreach (KeyValuePair<string, double> quarter in quarterlySales)
    {
        Console.WriteLine(entry.Key + ": $" + entry.Value);
    }
    
    
  12. لاحظ أن GetQuarter الأسلوب يستخدم شهر البيع لتحديد ربع البيع.

    GetQuarter يتم إنشاء الأسلوب التالي.

  13. إنشاء سطرين فارغين من التعليمات البرمجية QuarterlySalesReport أسفل الأسلوب .

  14. لاحظ أن GitHub Copilot يقترح إكمال التعليمات البرمجية GetQuarter للأسلوب.

    مع السياق الذي توفره QuarterlySalesReport الطريقة ، يمكن ل GitHub Copilot بسهولة إنشاء إكمال التعليمات البرمجية للأسلوب GetQuarter الذي يحدد ربع السنة استنادا إلى شهر البيع.

  15. خذ دقيقة لمراجعة إكمال سطر التعليمات البرمجية المقترح للأسلوب GetQuarter .

    لقطة شاشة تعرض اكتمال التعليمات البرمجية لأسلوب GetQuarter.

  16. لقبول إكمال التعليمات البرمجية المقترحة، اضغط على المفتاح Tab.

    public string GetQuarter(int month)
    {
        if (month >= 1 && month <= 3)
        {
            return "Q1";
        }
        else if (month >= 4 && month <= 6)
        {
            return "Q2";
        }
        else if (month >= 7 && month <= 9)
        {
            return "Q3";
        }
        else
        {
            return "Q4";
        }
    }
    
  17. لاحظ أن Main الأسلوب يحتاج إلى إكمال قبل أن تتمكن من تشغيل التعليمات البرمجية.

    يمكنك استخدام التعليقات في Main الأسلوب لتحديث التعليمات البرمجية الخاصة بك.

  18. ضع المؤشر في نهاية تعليق التعليمات البرمجية // call the GenerateSalesData method ، ثم اضغط على مفتاح الإدخال Enter.

    يستخدم GitHub Copilot التعليق لاقتراح بيان استدعاء للأسلوب.

  19. راجع ثم اقبل إكمال التعليمات البرمجية المقترحة من قبل GitHub Copilot.

  20. كرر العملية لتعليق التعليمات البرمجية // call the QuarterlySalesReport method .

  21. يجب أن يحتوي الأسلوب الخاص بك Main على التعليمات البرمجية التالية:

    static void Main(string[] args)
    {
        // create a new instance of the class
        QuarterlyIncomeReport report = new QuarterlyIncomeReport();
    
        // call the GenerateSalesData method
        SalesData[] salesData = report.GenerateSalesData();
    
        // call the QuarterlySalesReport method
        report.QuarterlySalesReport(salesData);
    }
    
    
  22. خذ دقيقة لمراجعة التعليمات البرمجية في فصلك QuarterlyIncomeReport الدراسي.

    namespace ReportGenerator
    {
        class QuarterlyIncomeReport
        {
            static void Main(string[] args)
            {
                // create a new instance of the class
                QuarterlyIncomeReport report = new QuarterlyIncomeReport();
    
                // call the GenerateSalesData method
                SalesData[] salesData = report.GenerateSalesData();
    
                // call the QuarterlySalesReport method
                report.QuarterlySalesReport(salesData);
            }
    
            /* public struct SalesData includes the following fields: date sold, department name, product ID, quantity sold, unit price */
            public struct SalesData
            {
                public DateOnly dateSold;
                public string departmentName;
                public int productID;
                public int quantitySold;
                public double unitPrice;
            }
    
            /* the GenerateSalesData method returns 1000 SalesData records. It assigns random values to each field of the data structure */
            public SalesData[] GenerateSalesData()
            {
                SalesData[] salesData = new SalesData[1000];
                Random random = new Random();
    
                for (int i = 0; i < 1000; i++)
                {
                    salesData[i].dateSold = new DateOnly(2023, random.Next(1, 13), random.Next(1, 29));
                    salesData[i].departmentName = "Department " + random.Next(1, 11);
                    salesData[i].productID = random.Next(1, 101);
                    salesData[i].quantitySold = random.Next(1, 101);
                    salesData[i].unitPrice = random.NextDouble() * 100;
                }
    
                return salesData;
            }
    
            public void QuarterlySalesReport(SalesData[] salesData)
            {
                // create a dictionary to store the quarterly sales data
                Dictionary<string, double> quarterlySales = new Dictionary<string, double>();
    
                // iterate through the sales data
                foreach (SalesData data in salesData)
                {
                    // calculate the total sales for each quarter
                    string quarter = GetQuarter(data.dateSold.Month);
                    double totalSales = data.quantitySold * data.unitPrice;
    
                    if (quarterlySales.ContainsKey(quarter))
                    {
                        quarterlySales[quarter] += totalSales;
                    }
                    else
                    {
                        quarterlySales.Add(quarter, totalSales);
                    }
                }
    
                // display the quarterly sales report
                Console.WriteLine("Quarterly Sales Report");
                Console.WriteLine("----------------------");
                foreach (KeyValuePair<string, double> quarter in quarterlySales)
                {
                    Console.WriteLine(entry.Key + ": $" + entry.Value);
                }
            }
    
            public string GetQuarter(int month)
            {
                if (month >= 1 && month <= 3)
                {
                    return "Q1";
                }
                else if (month >= 4 && month <= 6)
                {
                    return "Q2";
                }
                else if (month >= 7 && month <= 9)
                {
                    return "Q3";
                }
                else
                {
                    return "Q4";
                }
            }
        }
    }
    
    

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

  23. لمراجعة إخراج التقرير، قم بتشغيل التطبيق.

    افتح نافذة Terminal في Visual Studio Code، ثم أدخل الأمر التالي:

    dotnet run
    

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

  24. راجع الإخراج في نافذة Terminal.

    على الرغم من أن النتائج ربع السنوية تستند إلى قيم رقمية عشوائية، يجب أن تشاهد تقريرا منسقا مشابها للإخراج التالي:

    
    Quarterly Sales Report
    ----------------------
    Q3: $635637.5019563352
    Q4: $672247.315297204
    Q2: $667269.194630603
    Q1: $642769.2700531208
    
    

الملخص

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