Tạo mã bằng cách sử dụng đề xuất hoàn thành mã GitHub Copilot

Đã hoàn thành

GitHub Copilot có thể cung cấp các đề xuất hoàn thành mã cho nhiều ngôn ngữ lập trình và nhiều khuôn khổ khác nhau, nhưng đặc biệt phù hợp với Python, JavaScript, TypeScript, Ruby, Go, C# và C++. Hoàn thành dòng mã được tạo dựa trên ngữ cảnh của mã bạn đang viết. Bạn có thể chấp nhận, từ chối hoặc chấp nhận một phần các đề xuất do GitHub Copilot cung cấp.

GitHub Copilot cung cấp hai cách để tạo hoàn thành dòng mã:

  • Từ chú thích: Bạn có thể tạo hoàn thành dòng mã bằng cách viết chú thích mô tả mã bạn muốn tạo. GitHub Copilot cung cấp các đề xuất hoàn thành mã dựa trên nhận xét bạn viết.

  • Từ mã: Bạn có thể tạo hoàn thành dòng mã bằng cách bắt đầu một dòng mã hoặc bằng cách nhấn Enter sau một dòng mã đã hoàn thành. GitHub Copilot cung cấp các đề xuất hoàn thành mã dựa trên mã bạn viết.

Sử dụng GitHub Copilot để tạo hoàn thành dòng mã từ chú thích

GitHub Copilot tạo đề xuất hoàn thành mã dựa trên nhận xét và ngữ cảnh hiện có của ứng dụng.

Bạn có thể sử dụng chú thích để mô tả các đoạn mã, phương pháp, cấu trúc dữ liệu và các thành phần mã khác.

Giả sử bạn có đoạn mã sau đây:


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");
    }
}    

Ví dụ: chú thích sau đây có thể được sử dụng để tạo cấu trúc dữ liệu:


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

GitHub Copilot tạo ra một hoặc nhiều đề xuất hoàn thành mã dựa trên nhận xét mã của bạn và các tệp mã được mở trong trình soạn thảo.

Ảnh chụp màn hình hiển thị việc hoàn thành mã cho chú thích mô tả cấu trúc dữ liệu.

Lưu ý các kiểu dữ liệu được sử dụng để khai báo các trường của cấu trúc dữ liệu. GitHub Copilot chọn kiểu dữ liệu và tên biến dựa trên mã hiện có của bạn và nhận xét mã. GitHub Copilot cố gắng xác định cách ứng dụng sử dụng các biến và xác định các kiểu dữ liệu tương ứng.

Khi GitHub Copilot tạo ra nhiều đề xuất, bạn có thể chuyển đổi giữa các đề xuất bằng cách chọn mũi tên trái hoặc phải (><hoặc ) nằm ở bên trái nút Chấp nhận. Điều này cho phép bạn xem lại và chọn đề xuất phù hợp nhất với nhu cầu của bạn.

Chấp nhận đề xuất hoàn thành mã không khớp chính xác với nội dung bạn muốn. Tuy nhiên, các thay đổi cần thiết để "sửa chữa" đề xuất sẽ rõ ràng. Trong trường hợp này, một số kiểu dữ liệu không phải là điều bạn muốn, nhưng bạn có thể điều chỉnh chúng sau khi chấp nhận tự động điền được đề xuất.

Nếu không có tùy chọn được đề xuất nào giống với tùy chọn bạn cần, có hai cách bạn có thể thử. Để mở tab trình soạn thảo mới chứa danh sách các đề xuất khác, nhấn phím Ctrl + Enter . Tổ hợp phím nóng này mở ra một tab mới chứa tối đa 10 đề xuất khác. Sau đó, mỗi đề xuất sẽ có một nút mà bạn có thể sử dụng để chấp nhận đề xuất. Tab sẽ tự động đóng lại sau khi bạn chấp nhận đề xuất. Tùy chọn khác của bạn là nhấn phím Esc để bỏ qua các đề xuất và thử lại. Bạn có thể điều chỉnh chú thích mã để cung cấp thêm ngữ cảnh cho GitHub Copilot hoạt động.

Lưu ý

GitHub Copilot đôi khi có thể đề xuất một đề xuất theo giai đoạn. Nếu điều này xảy ra, bạn có thể nhấn Enter để xem các giai đoạn bổ sung của đề xuất sau khi nhấn phím Tab.

Để chấp nhận cấu trúc dữ liệu được đề xuất, nhấn phím Tab hoặc chọn Chấp nhận.

Để sửa đổi kiểu dữ liệu trường, hãy cập nhật mã của bạn như sau:

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

Việc thực hiện điều chỉnh nhanh chóng đối với các đề xuất hoàn thành mã sẽ giúp đảm bảo rằng bạn đang xây dựng mã mình muốn. Điều đặc biệt quan trọng là phải thực hiện chỉnh sửa sớm trong quá trình phát triển của bạn khi các phần lớn trong cơ sở mã của bạn vẫn cần được phát triển. Các lần hoàn tất mã tiếp theo được dựa trên mã bạn đã viết, vì vậy điều quan trọng là phải đảm bảo rằng mã của bạn chính xác nhất có thể.

Sử dụng GitHub Copilot để tạo hoàn thành dòng mã từ chú thích

GitHub Copilot tạo đề xuất hoàn thành mã dựa trên nhận xét và ngữ cảnh hiện có của ứng dụng. Bạn có thể sử dụng chú thích để mô tả các đoạn mã, phương pháp, cấu trúc dữ liệu và các thành phần mã khác.

Sử dụng các bước sau để hoàn thành phần này của bài tập:

  1. Trong tệp Program.cs , hãy tạo hai dòng mã trống bên dưới phương Main thức.

  2. Để tạo cấu trúc dữ liệu có thể được sử dụng để tạo dữ liệu kiểm tra, hãy tạo chú thích mã sau đây, rồi nhấn Enter:

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

    GitHub Copilot tạo ra một hoặc nhiều đề xuất hoàn thành mã dựa trên nhận xét mã của bạn và mọi mã hiện có mà nó tìm thấy trong ứng dụng của bạn.

  3. Mất một phút để xem lại các đề xuất hoàn thành mã được cung cấp bởi GitHub Copilot.

    Lưu ý

    Nếu GitHub Copilot tạo đề xuất cho một phương pháp chứ không phải là cấu trúc dữ liệu, hãy nhập str công cộng và chờ cho đề xuất hoàn thành mã cập nhật. GitHub Copilot sử dụng thông tin bổ sung để cải thiện đề xuất của nó.

    Ảnh chụp màn hình hiển thị việc hoàn thành mã cho chú thích mô tả cấu trúc dữ liệu.

    Lưu ý các kiểu dữ liệu được sử dụng để khai báo các trường của cấu trúc dữ liệu. GitHub Copilot chọn kiểu dữ liệu và tên biến dựa trên mã hiện có của bạn và nhận xét mã. GitHub Copilot cố gắng xác định cách ứng dụng sử dụng các biến và xác định các kiểu dữ liệu tương ứng.

    Khi GitHub Copilot tạo ra nhiều đề xuất, bạn có thể chuyển đổi giữa các đề xuất bằng cách chọn mũi tên trái hoặc phải (><hoặc ) nằm ở bên trái nút Chấp nhận. Điều này cho phép bạn xem lại và chọn đề xuất phù hợp nhất với nhu cầu của bạn.

    Chấp nhận đề xuất hoàn thành mã không khớp chính xác với nội dung bạn muốn. Tuy nhiên, các thay đổi cần thiết để "sửa chữa" đề xuất sẽ rõ ràng. Trong trường hợp này, một số kiểu dữ liệu không phải là điều bạn muốn, nhưng bạn có thể điều chỉnh chúng sau khi chấp nhận tự động điền được đề xuất.

    Nếu không có tùy chọn được đề xuất nào giống với tùy chọn bạn cần, có hai cách bạn có thể thử. Để mở tab trình soạn thảo mới chứa danh sách các đề xuất khác, nhấn phím Ctrl + Enter . Tổ hợp phím nóng này mở ra một tab mới chứa tối đa 10 đề xuất khác. Sau đó, mỗi đề xuất sẽ có một nút mà bạn có thể sử dụng để chấp nhận đề xuất. Tab sẽ tự động đóng lại sau khi bạn chấp nhận đề xuất. Tùy chọn khác của bạn là nhấn phím Esc để bỏ qua các đề xuất và thử lại. Bạn có thể điều chỉnh chú thích mã để cung cấp thêm ngữ cảnh cho GitHub Copilot hoạt động.

    Lưu ý

    GitHub Copilot đôi khi có thể đề xuất một đề xuất theo giai đoạn. Nếu điều này xảy ra, bạn có thể nhấn Enter để xem các giai đoạn bổ sung của đề xuất sau khi nhấn phím Tab.

  4. Để chấp nhận cấu trúc dữ liệu được đề xuất, nhấn phím Tab hoặc chọn Chấp nhận.

  5. Để sửa đổi kiểu dữ liệu trường, hãy cập nhật mã của bạn như sau:

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

    Việc thực hiện điều chỉnh nhanh chóng đối với các đề xuất hoàn thành mã sẽ giúp đảm bảo rằng bạn đang xây dựng mã mình muốn. Điều đặc biệt quan trọng là phải thực hiện chỉnh sửa sớm trong quá trình phát triển của bạn khi các phần lớn trong cơ sở mã của bạn vẫn cần được phát triển. Việc hoàn tất mã được dựa trên mã hiện có của bạn, vì vậy điều quan trọng là phải đảm bảo rằng mã của bạn càng chính xác càng tốt.

  6. Tạo hai dòng mã trống bên dưới cấu SalesData trúc dữ liệu.

  7. Để tạo một phương pháp tạo dữ liệu kiểm tra bằng cách sử dụng cấu SalesData trúc dữ liệu, hãy viết chú thích mã sau đây, rồi nhấn Enter:

    /* the GenerateSalesData method returns 1000 SalesData records. It assigns random values to each field of the data structure */
    
  8. Mất một phút để xem lại các đề xuất hoàn thành mã được cung cấp bởi GitHub Copilot.

    Lưu ý rằng phương GenerateSalesData pháp được thiết kế để trả về một mảng các đối SalesData tượng. Phương pháp này tạo ra 1.000 bản ghi dữ liệu kiểm tra, với các giá trị ngẫu nhiên được gán cho mỗi trường của cấu SalesData trúc dữ liệu.

    Ảnh chụp màn hình hiển thị việc hoàn thành mã cho chú thích mô tả phương pháp.

    Bạn nên luôn luôn xem xét các đề xuất của GitHub Copilot và GitHub Copilot Chat, ngay cả khi họ có vẻ là chính xác.

    Lưu ý

    Nếu GitHub Copilot đề xuất một dòng mã duy nhất chứ không phải là một phương pháp đã hoàn thành, hãy nhấn GenerateSalesData + để mở tab Đề xuất Của GitHub Copilot. Xem lại các đề xuất trên tab mới. Ở bước tiếp theo, sử dụng nút "Chấp nhận đề xuất #" để chấp nhận đề xuất. GitHub Copilot trình bày đề xuất tăng dần vào dịp. Mặc dù bạn có thể chấp nhận việc hoàn thành mã tăng dần, tốt hơn bạn nên sử dụng tab Đề xuất GitHub Copilot để xem lại toàn bộ đề xuất trước khi đưa ra quyết định chấp nhận hoặc loại bỏ.

  9. Cuộn qua các đề xuất hoàn thành mã và chọn kết quả phù hợp nhất cho các yêu cầu.

  10. Để chấp nhận hoàn tất mã, nhấn phím Tab.

    Lưu ý rằng đề xuất hoàn thành mã bao gồm lỗi cú pháp trong mã được sử dụng để tạo DateSold trường. DateOnly chấp nhận ba giá trị số nguyên phải được liệt kê theo đúng thứ tự: Year, Month, Day.

  11. Để chỉ định một năm cho mã được dùng để tạo trường DateSold , hãy cập nhật dòng mã như sau:

    salesData[i].DateSold = new DateOnly(2023, random.Next(1, 13), random.Next(1, 29));
    
  12. Nếu cần, hãy điều chỉnh các dòng mã khác để khớp với đoạn mã sau đây:

    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;
    }
    

Khả năng tạo mã từ các nhận xét mã là một tính năng mạnh mẽ của GitHub Copilot. Chỉ với hai chú thích, bạn có thể tạo một cấu trúc dữ liệu và một phương pháp tạo dữ liệu kiểm tra.

Sử dụng GitHub Copilot để tạo hoàn thành dòng mã

GitHub Copilot có thể tạo hoàn tất dòng mã dựa trên mã bạn nhập. Bạn có thể tạo hoàn thành dòng mã theo hai cách:

  • Bắt đầu nhập một dòng mã, sau đó đợi GitHub Copilot đề xuất tự động hoàn tất cho dòng mã chưa hoàn thành của bạn.
  • Nhập một dòng mã hoàn chỉnh, nhấn phím Enter , rồi chờ GitHub Copilot đề xuất tự động hoàn tất cho dòng mã tiếp theo.

Lưu ý

GitHub Copilot tạo ra các mã được đề xuất hoàn thành dựa trên mã bạn nhập và ngữ cảnh được xác định bởi mã trong ứng dụng của bạn. Bạn càng có nhiều mã trong ứng dụng của mình thì càng có nhiều ngữ cảnh GitHub Copilot khi tạo phản hồi. GitHub Copilot có thể dựa trên phản hồi dựa trên mã hiện có của bạn, vì vậy chất lượng mã của bạn rất quan trọng. Khi khối lượng và chất lượng của mã hiện có tăng lên, do đó, chất lượng và độ tin cậy của dòng mã hoàn thành được đề xuất bởi GitHub Copilot. GitHub Copilot rất tốt trong việc tạo ra các dòng mã hoàn thành cho các tác vụ và mẫu hình lập trình phổ biến, đặc biệt là khi một chuỗi các thành phần liên quan cần được tạo ra.

Trong phần này của bài tập, bạn làm việc trên các phương QuarterlySalesReport pháp.

Dưới đây là các tác vụ bạn cần hoàn thành:

  • Cập nhật hàm tạo phương pháp với tham số chấp nhận tuyển tập đối tượng của SalesData bạn.
  • Sử dụng GitHub Copilot để tạo mã dòng hoàn thành xử lý dữ liệu bán hàng cho báo cáo hàng quý.
  • Chạy ứng dụng và xem lại báo cáo doanh số hàng quý.

Sử dụng các bước sau để hoàn thành phần này của bài tập:

  1. Cập nhật hàm tạo phương pháp cho QuarterlySalesReport như sau:

    public void QuarterlySalesReport(SalesData[] salesData)
    
  2. Dành một phút để xem xét mã mà bạn cần phát triển.

    Khái niệm này là thẳng về phía trước. Bạn muốn mã của mình tính toán doanh thu hàng quý dựa trên dữ liệu doanh số của mình, rồi viết báo cáo. Để thực hiện điều đó, mã của bạn cần:

    • Đọc qua bộ sưu salesData tập.
    • Tính toán giá trị của mỗi giao dịch bán hàng dựa trên số lượng đã bán và đơn giá.
    • Sử dụng ngày bán hàng để xác định quý bán hàng thuộc về.
    • Tính tổng doanh thu cho mỗi quý.
    • Viết báo cáo doanh thu theo quý.

    Một lựa chọn là bắt đầu nhập mã cho một vòng foreach lặp và sau đó xem những gì GitHub Copilot đề xuất.

  3. Trong phương QuarterlySalesReport pháp, tạo một dòng mã mới ở phía trên cùng của khối mã.

    Phải có ít nhất một dòng mã trống giữa dòng mã mới và dòng mã có chứa Console.WriteLine().

  4. Để tạo hoàn thành dòng mã, hãy nhập foreach ( và sau đó đợi GitHub Copilot đề xuất các tùy chọn hoàn thành dòng mã.

  5. Xem lại việc hoàn thành mã được đề xuất bởi GitHub Copilot.

    Ảnh chụp màn hình hiển thị việc hoàn thành mã cho vòng lặp trước.

    Hoàn thành mã được đề xuất không phải là điều bạn muốn.

    Mặc dù GitHub Copilot foreachsalesDatađề xuất một vòng lặp lặp đi qua , không có phân tích hoặc tính toán bên trong vòng lặp. Mã được đề xuất bao Console.WriteLine gồm các câu lệnh mà bạn không muốn hoặc không cần.

  6. Mất một phút để xem xét lý do tại sao GitHub Copilot là gợi ý Console.WriteLine tuyên bố.

    Hãy nhớ rằng GitHub Copilot tạo ra các đề xuất hoàn thành mã dựa trên ngữ cảnh mã của bạn. Trong trường hợp này, bạn thực sự không có nhiều mã cho GitHub Copilot để xem xét. Và tình hình trở nên tồi tệ hơn.

    Mã mà GitHub Copilot nhìn thấy bên trong phương thức của bạn là một câu lệnh Console.WriteLine . Với không có ngữ cảnh khác có sẵn trong phương pháp và không có phương pháp tương tự trong cơ sở mã của bạn để rút ra, GitHub Copilot Console.WriteLineforeach kết luận rằng bạn có thể muốn câu lệnh bên trong vòng lặp.

    GitHub Copilot hoạt động tốt nhất khi mã của bạn sạch sẽ và tập trung. Nếu bạn thấy các nhận xét hoặc câu lệnh mã không cần thiết trong mã của mình, bạn có thể muốn loại bỏ chúng trước khi thử sử dụng mã GitHub Copilot hoàn tất.

  7. Để dọn dẹp mã của bạn trước khi thử lại GitHub Copilot, hãy hoàn thành các bước sau:

    • Hủy bỏ việc hoàn thành mã foreach ( được đề xuất.
    • Xóa câu lệnh một foreach ( phần mà bạn đã nhập.
    • Xóa câu lệnh Console.WriteLine khỏi phương thức của QuarterlySalesReport bạn.

    Bây giờ bạn nên sẵn sàng để thử lại GitHub Copilot.

  8. Đảm bảo rằng phương pháp QuarterlySalesReport của bạn trông tương tự như mã sau đây:

    public void QuarterlySalesReport(SalesData[] salesData)
    {
    
    
    }
    
  9. Đặt con trỏ trên dòng mã trống bên trong phương QuarterlySalesReport pháp, rồi nhấn Enter.

    Có thể mất một lúc để GitHub Copilot tạo mã được đề xuất hoàn tất.

  10. Dành một phút để xem lại các mã được đề xuất đã hoàn thành.

    Quan trọng

    Mã hoàn tất mà bạn nhận được có thể khác với các đề xuất được hiển thị trong ảnh chụp màn hình sau đây. Mặc dù GitHub Copilot chỉ có một tên phương thức và tham số để làm việc với, điều đó có thể đủ để tạo ra các đề xuất hữu ích. Bạn sẽ thấy các gợi ý tính toán doanh thu theo quý. Từ chối các gợi ý và thử lại có thể cung cấp các kết quả khác nhau.

    Ảnh chụp màn hình hiển thị đề xuất hoàn thành mã xử lý dữ liệu cho báo cáo.

    Bạn có thể chuyển đổi giữa các đề xuất bằng cách chọn > hoặc <.

    Lưu ý rằng việc hoàn thành mã được đề xuất lặp lại thông qua dữ liệu bán hàng và thực hiện tính toán doanh số hàng quý.

  11. Để chấp nhận đề xuất hoàn thành mã, nhấn phím Tab.

    Việc hoàn thành mã được đề xuất tính toán và hiển thị thu nhập hàng quý dựa trên dữ liệu bán hàng.

    // 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. Lưu ý rằng GetQuarter phương pháp này sử dụng tháng giao dịch bán hàng để xác định quý bán hàng.

    Phương GetQuarter thức sẽ được tạo tiếp theo.

  13. Tạo hai dòng mã trống bên dưới phương QuarterlySalesReport pháp.

  14. Lưu ý rằng GitHub Copilot đề xuất hoàn thành mã cho phương GetQuarter pháp.

    Với ngữ cảnh được QuarterlySalesReport cung cấp bởi phương pháp này, GitHub Copilot GetQuarter có thể dễ dàng tạo ra một hoàn thành mã cho phương pháp xác định quý dựa trên tháng bán hàng.

  15. Dành một phút để xem lại việc hoàn tất dòng mã được đề xuất cho phương GetQuarter pháp.

    Ảnh chụp màn hình hiển thị việc hoàn tất mã cho phương pháp GetQuarter.

  16. Để chấp nhận đề xuất hoàn thành mã, nhấn phím 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. Lưu ý rằng Main phương pháp cần được hoàn tất trước khi bạn có thể chạy mã.

    Bạn có thể sử dụng các nhận xét trong phương Main pháp để cập nhật mã của bạn.

  18. Đặt con trỏ ở cuối chú thích // call the GenerateSalesData method mã, rồi nhấn Enter.

    GitHub Copilot sử dụng nhận xét để đề xuất một câu lệnh gọi cho phương thức.

  19. Xem lại và sau đó chấp nhận việc hoàn thành mã được đề xuất bởi GitHub Copilot.

  20. Lặp lại quy trình cho chú // call the QuarterlySalesReport method thích mã.

  21. Phương Main pháp của bạn nên chứa mã sau đây:

    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. Dành một phút để xem lại mã trong lớp của QuarterlyIncomeReport bạn.

    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";
                }
            }
        }
    }
    
    

    Mã này được tạo ra, gần như hoàn toàn, sử dụng các dòng mã hoàn thành được tạo ra bởi GitHub Copilot. Tuy nhiên, việc xem lại đề xuất mã của bạn rất quan trọng và cần phải sửa chữa. Bạn nên luôn xem lại các mã hoàn thành được đề xuất bởi GitHub Copilot để đảm bảo rằng mã đáp ứng yêu cầu của bạn.

  23. Để xem lại kết quả báo cáo, hãy chạy ứng dụng.

    Mở cửa sổ Thiết bị đầu cuối trong Mã Visual Studio, rồi nhập lệnh sau:

    dotnet run
    

    Kết quả sẽ hiển thị báo cáo thu nhập hàng quý, hiển thị tên phòng ban, quý và thu nhập của từng phòng ban và quý được trình bày trong dữ liệu kiểm tra.

  24. Xem lại đầu ra trong cửa sổ Thiết bị đầu cuối.

    Mặc dù kết quả hàng quý dựa trên các giá trị số ngẫu nhiên, bạn sẽ thấy một báo cáo được định dạng tương tự như đầu ra sau đây:

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

Tóm tắt

Hoàn thành dòng mã là một tính năng mạnh mẽ của GitHub Copilot có thể giúp bạn tạo mã nhanh chóng và hiệu quả. Bằng cách sử dụng chú thích để mô tả mã bạn muốn tạo, bạn có thể tạo cấu trúc dữ liệu, phương pháp và các thành phần mã khác với nỗ lực tối thiểu. Ngoài ra, GitHub Copilot có thể tạo hoàn thành dòng mã dựa trên mã bạn nhập, cho phép bạn xây dựng các ứng dụng phức tạp một cách dễ dàng.