GitHub Copilot 인라인 채팅을 사용하여 코드 리팩터링

완료됨

GitHub Copilot 인라인 채팅 기능을 사용하면 코드 편집기에서 직접 코드를 리팩터링할 수 있습니다. 인라인 채팅은 채팅 보기로 전환하지 않고도 코드를 변경하려는 경우에 유용합니다.

코드 이해

코드를 리팩터링하기 전에 작업 중인 코드를 이해하는 것이 중요합니다. 코드의 용도, 작동 방식 및 코드에 있을 수 있는 종속성을 이해해야 합니다. 코드에 익숙하지 않은 경우 코드를 읽고 해당 구조와 논리를 이해하는 데 시간이 걸릴 수 있습니다. GitHub Copilot 사용하여 코드를 분석하면 개선 영역을 식별하고 리팩터링 옵션을 제안할 수 있습니다.

인라인 채팅 기능을 사용하여 코드에 대한 질문을 하거나, 특정 부분에 대한 설명을 얻거나, 개선에 대한 제안을 요청할 수 있습니다. 예를 들어 GitHub Copilot 특정 함수의 작동 방식을 설명하거나 최적화 방법을 제안하도록 요청할 수 있습니다. 인라인 채팅 기능을 사용하여 함수 리팩터링 또는 코드 가독성 향상과 같은 특정 코딩 작업에 대한 도움을 요청할 수도 있습니다.

다음은 GitHub Copilot 코드에 대한 도움을 요청하는 프롬프트의 몇 가지 예입니다.

/explain Explain how authentication is implemented in this code
/explain Can this code be updated to improve security? Explain the concepts and show some examples

설명이 길거나 복잡한 경우 채팅 보기로 이동하여 대화를 계속할 수 있습니다. 채팅 보기를 사용하여 후속 질문을 하거나 추가 정보를 요청할 수도 있습니다.

인라인 채팅을 사용하여 코드 리팩터링

특정 작업을 수행하는 코드 섹션을 리팩터링하려는 경우 인라인 채팅 기능을 사용합니다. 여러 파일 또는 프로젝트를 업데이트하는 것과 관련된 보다 복잡한 변경 내용은 채팅 보기 모드 중 하나를 사용합니다.

인라인 채팅을 사용하여 코드를 리팩터링하려면 다음 단계를 수행합니다.

  1. 최적화하려는 코드가 포함된 파일을 엽니다.

  2. 최적화하려는 코드를 선택합니다.

  3. 인라인 채팅 세션을 엽니다.

    Ctrl+I 바로 가기 키를 사용하여 인라인 채팅 세션을 엽니다. 또는 GitHub Copilot 메뉴 중 하나에서 인라인 채팅 편집기 선택할 수 있습니다.

    메모

    파일이 활성 채팅 편집 세션에 속하는 경우 Ctrl+I를 누르면 일반 인라인 채팅 대신 채팅 보기의 채팅에서 요청 이 열립니다. 이렇게 하면 전체 대화 컨텍스트를 사용할 수 있도록 프롬프트가 기존 세션으로 라우팅됩니다. 세션 상태에 관계없이 항상 일반 인라인 채팅을 사용하려면 VS Code 설정으로 설정합니다 inlineChat.askInChatfalse .

  4. 최적화를 요청하는 프롬프트를 입력합니다.

    예: 이 코드를 개선할 수 있나요?

  5. 제안된 코드 업데이트를 검토합니다.

    GitHub Copilot 권장 코드 업데이트를 편집기에서 직접 적용합니다. 여기에서 주변 코드의 전체 컨텍스트를 사용하여 현재 위치에서 검토할 수 있습니다.

  6. 수락 또는 닫기를 선택하여 제안된 코드 업데이트를 수락하거나 취소합니다.

    모든 GitHub Copilot 제안 마찬가지로 수정된 코드가 오류 없이 실행되고 올바른 결과를 생성하는지 확인합니다.

다음 예제에서는 인라인 채팅을 사용하여 데이터를 처리하는 C# 메서드를 리팩터링하는 방법을 보여 줍니다.

원래 메서드는 데이터 정리를 수행하고, 데이터 테이블을 생성한 다음, 테이블의 내용을 인쇄합니다. 여러 작업을 하나의 메서드로 결합하면 코드를 유지 관리하고 테스트하기가 더 어려워집니다.

원래 메서드에서 수행된 각 작업에 대해 별도의 메서드를 만들도록 인라인 채팅에 요청하여 원래 메서드를 리팩터링할 수 있습니다.

원래 코드는 다음과 같습니다.

using System;
using System.Data;

public class DataProcessor
{
    public void ProcessData(string item, string price)
    {
        // Cleanse the data
        item = item.Trim();    // Remove leading and trailing whitespace
        price = price.Trim();  // Remove leading and trailing whitespace
        double priceValue = double.Parse(price);   // Convert price to a double
        // More cleansing operations can be added here

        // Create and print a DataTable
        DataTable table = new DataTable();
        table.Columns.Add("Item", typeof(string));
        table.Columns.Add("Price", typeof(double));
        table.Rows.Add(item, priceValue);
        foreach (DataRow row in table.Rows)
        {
            Console.WriteLine($"Item: {row["Item"]}, Price: {row["Price"]}");
        }
    }
}

// Example usage
class Program
{
    static void Main()
    {
        string item = "  Apple  ";
        string price = "  1.50  ";
        var processor = new DataProcessor();
        processor.ProcessData(item, price);
    }
}

ProcessData 메서드를 리팩터링하려면 다음 단계를 수행합니다.

  1. ProcessData 메서드를 선택합니다.

  2. 인라인 채팅을 엽니다.

  3. GitHub Copilot 각 작업에 대해 별도의 메서드를 만들도록 요청하는 프롬프트를 입력한 다음 Enter 누릅니다.

    예를 들어 ProcessData 메서드를 리팩터링하려고 합니다. 데이터 정리 방법, 인쇄 방법 및 데이터 처리 방법을 원합니다.

  4. 제안된 코드 업데이트를 검토합니다.

    이 예제에서 GitHub Copilot 정리 및 인쇄 작업을 별도의 메서드로 구분하는 원래 메서드의 리팩터링된 버전을 제안합니다.

    using System;
    using System.Data;
    
    public class DataProcessor
    {
        public void ProcessData(string item, string price)
        {
            (string cleansedItem, double cleansedPrice) = CleanseData(item, price);
            DataTable table = new DataTable();
            table.Columns.Add("Item", typeof(string));
            table.Columns.Add("Price", typeof(double));
            table.Rows.Add(cleansedItem, cleansedPrice);
            PrintData(table);
        }
    
        private (string, double) CleanseData(string item, string price)
        {
            string trimmedItem = item.Trim();
            string trimmedPrice = price.Trim();
            double priceValue = double.Parse(trimmedPrice);
            return (trimmedItem, priceValue);
        }
    
        private void PrintData(DataTable table)
        {
            foreach (DataRow row in table.Rows)
            {
                Console.WriteLine($"Item: {row["Item"]}, Price: {row["Price"]}");
            }
        }
    }
    
    // Example usage
    class Program
    {
        static void Main()
        {
            string item = "  Apple  ";
            string price = "  1.50  ";
            var processor = new DataProcessor();
            processor.ProcessData(item, price);
        }
    }
    

    이 예제에서 원래 코드를 리팩터링하면 모듈성이 향상되고 코드를 더 쉽게 이해할 수 있습니다.

  5. 수락 또는 닫기를 선택하여 제안된 코드 업데이트를 수락하거나 취소합니다.

    이 예제에서는 제안된 코드가 잘 표시되므로 수락 을 선택하여 리팩터링된 코드를 프로젝트에 적용합니다.

    모든 GitHub Copilot 제안 마찬가지로 수정된 코드가 오류 없이 실행되고 올바른 결과를 생성하는지 확인합니다.

  6. 리팩터링된 코드를 테스트하여 오류 없이 실행되고 예상된 결과를 생성합니다.

요약

GitHub Copilot 인라인 채팅 기능을 사용하면 코드 편집기에서 직접 코드를 리팩터링할 수 있습니다. 인라인 채팅은 채팅 보기로 전환하지 않고도 코드를 변경하려는 경우에 유용합니다. 인라인 채팅을 사용하여 함수 리팩터링 또는 코드 가독성 향상과 같은 특정 코딩 작업에 대한 도움을 요청할 수 있습니다. 인라인 채팅을 사용하여 리팩터링하기 전에 기존 코드를 평가할 수도 있습니다.