GitHub Copilot 모범 사례 검사
Visual Studio Code 대한 GitHub Copilot 개발자가 코드를 더 빠르고 적은 오류로 작성하는 데 도움이 됩니다.
그러나 GitHub Copilot은 프로그래머가 아니라 AI 페어 프로그래머입니다. GitHub Copilot 최대한 활용하려면 모범 사례를 따라야 합니다.
작업에 적합한 GitHub Copilot 도구 선택
GitHub Copilot 코드 완성 기능과 GitHub Copilot 채팅 기능은 일부 기능을 공유하지만 두 도구는 다른 상황에서 가장 잘 사용됩니다.
코드 완성은 다음과 같은 경우에 가장 많은 값을 제공합니다.
- 코드를 작성할 때 코드 스니펫, 변수 이름 및 함수가 자동 완성됩니다.
- 반복 코드를 생성합니다.
- 자연어로 인라인 주석에서 코드를 생성합니다.
- 테스트 기반 개발을 위한 테스트를 생성합니다.
또는 GitHub Copilot 채팅 기능은 다음과 같은 경우에 가장 많은 가치를 제공합니다.
- 자연어로 된 코드에 대한 질문에 대답합니다.
- 코드의 큰 섹션을 생성한 다음, 필요에 맞게 해당 코드를 반복합니다.
- 채팅 참가자, 슬래시 명령 및 채팅 변수를 사용하여 특정 작업을 수행합니다. 채팅 참가자(예:
@vscode또는@terminal)는 요청의 컨텍스트를 설정하고, 슬래시 명령어(예:/explain또는/fix)는 사용자의 의도를 전달하며, 채팅 변수(예:#file또는#codebase)는 Copilot이 특정 컨텍스트에 집중하도록 합니다. 다양한 참가자와 명령은 다양한 GitHub Copilot Chat 플랫폼에서 사용할 수 있습니다. - 특정 가상 사용자로 작업을 완료합니다. 예를 들어 GitHub Copilot Chat 코드 품질, 가독성 및 효율성에 매우 관심이 있는 선임 C++ 개발자임을 알릴 수 있습니다. 가상 사용자를 설정한 후 GitHub Copilot 코드를 검토하도록 요청할 수 있습니다.
GitHub Copilot 인라인 제안 최대한 활용
GitHub Copilot 보다 효율적으로 코딩하는 데 도움이 되는 제안을 자동으로 제공합니다. GitHub Copilot 특정 작업 및 동작을 따를 때 더 나은 제안을 제공합니다. 사용자와 동료가 코드를 이해하는 데 도움이 되므로 이러한 작업 및 동작 중 일부를 이미 따르고 있을 수 있습니다.
GitHub Copilot 대한 컨텍스트 제공
GitHub Copilot 자신이 하고 있는 일과 도움이 필요한 것을 알 수 있는 충분한 컨텍스트가 있을 때 가장 잘 작동합니다. 도움을 요청할 때 동료에게 관련 컨텍스트를 제공하는 것처럼 GitHub Copilot 컨텍스트를 제공해야 합니다.
열려 있는 파일
코드 완성을 위해 GitHub Copilot 편집기에서 열려 있는 파일을 확인하여 컨텍스트를 설정하고 적절한 제안을 만듭니다. GitHub Copilot을 사용하는 동안 관련 파일을 Visual Studio Code에서 열어 두면, 컨텍스트를 정의하고 GitHub Copilot이 프로젝트의 더 큰 그림을 볼 수 있습니다.
최상위 주석
동료를 간략하고 개략적으로 소개하는 것처럼 코드 파일의 최상위 주석은 만드는 코드의 전체 컨텍스트를 GitHub Copilot 이해하는 데 도움이 될 수 있습니다.
적절한 포함 및 참조
작업에 필요한 포함 또는 모듈 참조를 수동으로 설정하는 것이 가장 좋습니다. GitHub Copilot 제안할 수 있지만 포함해야 하는 종속성을 가장 잘 알고 있는 것 같습니다. 또한 제안을 작성할 때 사용할 프레임워크, 라이브러리 및 해당 버전에 대해 GitHub Copilot 알릴 수 있습니다.
의미 있는 함수 이름
fetchData()라는 메서드가 동료(또는 몇 달 후)에게 큰 의미가 없는 것처럼 fetchData()는 GitHub Copilot 코드를 이해하는 데 도움이 되지 않습니다. 의미 있는 함수 이름을 사용하면 GitHub Copilot 원하는 대로 제안을 생성할 수 있습니다.
구체적이고 범위가 넓은 함수 주석
함수 이름은 지나치게 길지 않으면서도 설명이 가능해야 합니다. 함수 주석은 GitHub Copilot 알아야 할 수 있는 세부 정보를 입력하는 데 도움이 될 수 있습니다.
샘플 코드가 있는 프라임 GitHub Copilot
오른쪽 페이지에서 GitHub Copilot 가져오는 한 가지 트릭은 바람직한 코드 샘플을 복사하여 열려 있는 편집기 탭에 붙여넣는 것입니다. 샘플은 GitHub Copilot 에뮬레이트하려는 코드를 나타내야 합니다. 예제를 제공하면 GitHub Copilot 에뮬레이트하려는 언어 및 작업과 일치하는 제안을 생성하는 데 도움이 될 수 있습니다. GitHub Copilot 목표와 일치하는 코드를 만드는 데 도움이 되면 샘플 코드를 삭제할 수 있습니다. 이 방법은 GitHub Copilot "학습"해야 하는 경우에 특히 유용합니다. 예를 들어 GitHub Copilot 기본값으로 이전 버전의 라이브러리를 구현하는 코드 조각을 제안한다고 가정합니다. 최신 버전의 라이브러리를 사용하는 코드를 프로젝트에 삽입할 수 있습니다. 이렇게 하면 GitHub Copilot 최신 버전의 라이브러리를 사용하는 코드 조각을 제안하기 시작할 수 있습니다. GitHub Copilot 새 라이브러리 버전을 사용하는 방법을 배웠으면 샘플 코드를 삭제할 수 있습니다.
일관성을 유지하고 높은 품질 기준 유지
GitHub Copilot은 기존 패턴을 따르는 제안을 생성하기 위해 당신의 코드에 붙잡을 것이며, 이에 따라 "가비지 인, 가비지 아웃"이라는 속담이 적용됩니다.
항상 높은 품질의 수준을 유지하기 위한 규율이 필요할 수 있습니다. 특히 무언가를 작동하기 위해 빠르고 느슨하게 코딩하는 경우. "해킹 모드일 때 GitHub Copilot 자동 완성을 사용하지 않도록 하고 싶을 수도 있습니다." GitHub Copilot 상태 메뉴(Visual Studio Code 상태 표시줄에서 액세스할 수 있음)에서 일시적으로 완료를 사용하지 않도록 설정할 수 있습니다.
GitHub Copilot Chat 최대한 활용
GitHub Copilot 채팅 기능을 사용하는 경우 환경을 최적화하기 위해 수행할 수 있는 몇 가지 작업이 있습니다.
일반적으로 시작하고 구체적으로 진행
GitHub Copilot 대한 프롬프트를 작성할 때 먼저 GitHub Copilot 목표 또는 시나리오에 대한 광범위한 설명을 제공합니다. 그런 다음 특정 요구 사항을 나열합니다. 다음과 같은 프롬프트를 고려합니다.
- 숫자가 소수인지를 알려주는 함수를 작성합니다.
- 정수가 소수이면 함수는 정수를 사용하고 true를 반환해야 합니다.
- 입력이 양의 정수가 아닌 경우 함수에서 오류를 발생시켜야 합니다.
예제 제공
예제를 사용하여 원하는 내용을 GitHub Copilot 이해할 수 있습니다. 예제 입력 데이터, 예제 출력, 예제 구현을 제공할 수 있습니다.
복잡한 작업을 더 간단한 작업으로 나누기
GitHub Copilot 복잡하거나 큰 작업을 완료하려면 작업을 여러 간단한 작은 작업으로 분할합니다. 예를 들어 GitHub Copilot 단어 검색 퍼즐을 생성하도록 요청하는 대신 프로세스를 더 작은 작업으로 세분화하고 GitHub Copilot 하나씩 수행하도록 요청합니다.
- 10x10 표의 문자를 생성하는 함수를 작성합니다.
- 유효한 단어 목록이 지정된 경우 문자 표의 모든 단어를 찾는 함수를 작성합니다.
- 이전 함수들을 사용하여 적어도 10개의 단어를 포함하는 10x10 격자의 문자를 생성하는 함수를 작성하세요.
- 문자 표와 표에서 임의의 단어 10개를 인쇄하도록 이전 함수를 업데이트합니다.
모호성 방지
모호한 용어를 피하세요. 예를 들어, "this"가 현재 파일이나 마지막 GitHub Copilot 응답, 또는 특정 코드 블록일 경우에는 "이것이 무엇을 하는지" 묻지 마세요. 모호한 용어를 사용하는 대신 다음과 같이 구체적으로 설명합니다. createUser 함수가 수행하는 작업은 무엇인가요?
관련 코드 표시
IDE에서 GitHub Copilot 채팅을 사용하는 경우 파일을 열거나 GitHub Copilot 참조할 코드를 강조 표시합니다. 프롬프트에서 채팅 참가자, 슬래시 명령, 채팅 변수를 사용하여 컨텍스트를 정의합니다. 예를 들어 GitHub Copilot Chat 참조해야 하는 파일을 지정합니다.
채팅 참가자, 슬래시 명령 및 채팅 변수 사용
채팅 참가자는 코드베이스나 특정 도메인 또는 기술에 대한 추가 컨텍스트를 수집하도록 설계되었습니다. 적절한 참가자를 지정하면 GitHub Copilot 채팅에서 GitHub Copilot 백 엔드로 보낼 더 나은 정보를 찾고 제공할 수 있습니다. 예를 들어 Visual Studio Code 기능 및 API에 대한 질문을 할 때 @vscode 사용합니다.
슬래시 명령은 질문을 할 때 GitHub Copilot Chat 의도를 이해하는 데 도움이 됩니다. 코드 베이스/explain()에 대해 배우고 있거나, 문제 해결에 도움을 원하십니까() 또는 테스트 사례(/fix/tests)를 만들고 있나요? GitHub Copilot Chat 수행하려는 작업을 알려면 작업에 대한 회신을 조정하고 유용한 명령, 설정 및 코드 조각을 제공할 수 있습니다.
채팅 참가자(예: @terminal 또는 @vscode)는 도메인별 컨텍스트를 제공하는 채팅 변수를 제공할 수 있습니다. 채팅 프롬프트에서 채팅 변수를 참조하려면 # 기호를 사용하십시오. 채팅 변수를 사용하여 프롬프트의 컨텍스트를 보다 구체적으로 지정할 수 있습니다.
예를 들어 채팅 변수를 #file 사용하면 채팅 프롬프트에서 작업 영역에서 특정 파일을 참조할 수 있습니다. 이렇게 하면 작업 중인 파일에 대한 컨텍스트를 제공하여 GitHub Copilot Chat 코드와 더 관련성이 높아진 답변을 만들 수 있습니다. "" 또는Can you suggest improvements to #file:package.json? "How do I add an extension in #file:devcontainer.json?"와 같은 질문을 할 수 있습니다.
#file 변수를 사용하면 GitHub Copilot 보다 타겟팅되고 정확한 응답을 얻을 수 있습니다.
실험 및 반복
원하는 결과를 얻지 못하면 프롬프트를 반복하고 다시 시도합니다. 다음 요청에서 이전 응답을 참조합니다. 또한 이전 응답을 삭제한 후 다시 시작할 수 있습니다.
관련 기록 유지
GitHub Copilot Chat 채팅 기록을 사용하여 요청에 대한 컨텍스트를 가져옵니다. GitHub Copilot 관련 채팅 기록을 사용하고 있는지 확인하려면 다음을 수행합니다.
- 새 작업에 대한 새 대화를 시작하기 위해 스레드를 사용합니다.
- 더 이상 연관이 없거나 원하는 결과를 얻지 못한 요청은 삭제합니다.
우수한 코딩 사례 따르기
GitHub Copilot 제안 사항을 요청할 때 원하는 응답을 받지 못하는 경우 기존 코드가 모범 사례를 따르고 읽기 쉬운지 확인합니다. 예시:
- 일관된 코드 스타일 및 패턴을 사용합니다.
- 변수 및 함수에 설명이 포함된 이름을 사용합니다.
- 코드를 주석으로 작성하세요.
- 코드를 모듈식 범위 구성 요소로 구성합니다.
- 단위 테스트를 포함합니다.
요약
GitHub Copilot 코드를 더 빠르고 적은 오류로 작성하는 데 도움이 되는 강력한 도구입니다. 그러나 GitHub Copilot 최대한 활용하려면 모범 사례를 따라야 합니다. 작업에 적합한 GitHub Copilot 도구를 선택하고, 컨텍스트를 제공하고, 좋은 코딩 사례를 따르면 GitHub Copilot 환경을 최적화할 수 있습니다.