Refaktoryzuj kod, używając trybów czatu GitHub Copilot

Ukończone

GitHub Copilot można użyć do refaktoryzacji kodu w bazie kodu. Za pomocą agentów widoku czatu można analizować, planować i implementować zadania refaktoryzacji kodu. Agenci widoku czatu udostępniają przyjazny dla użytkownika interfejs do zarządzania konwersacjami na czacie i uzyskiwania dostępu do funkcji GitHub Copilot. Widok czatu obejmuje następujących wbudowanych agentów:

  • Ask: zadaj pytania dotyczące bazy kodu lub pojęć technologicznych. Możesz użyć funkcjonalności Zapytaj, aby wyjaśnić kod, zasugerować poprawki lub korekty albo podać informacje związane z kodem.
  • Plan: Użyj agenta planu, aby utworzyć ustrukturyzowany plan implementacji krok po kroku przed napisaniem jakiegokolwiek kodu. Gdy plan wygląda prawidłowo, przekaż go agentowi implementacji, aby go wykonać.
  • Agent: użyj Agent, aby uruchomić agentowy przepływ pracy kodowania. Agent umożliwia uruchamianie poleceń, wykonywanie kodu lub wykonywanie innych zadań w obszarze roboczym.

Ważne

W przypadku korzystania z agenta GitHub Copilot może wysyłać wiele żądań premium do wykonania jednego zadania. Żądania Premium mogą być używane w wyniku monitów inicjowanych przez użytkownika oraz działań podejmowanych przez GitHub Copilot w Twoim imieniu. Łączna liczba użytych żądań w warstwie Premium zależy od złożoności zadania, liczby zaangażowanych kroków i wybranego modelu.

Refaktoryzacja kodu za pomocą polecenia Ask

Możesz użyć polecenia Zapytaj, aby uzyskać pomoc dotyczącą zadań kodowania, poznać trudne pojęcia i ulepszyć kod. Funkcja Ask jest przeznaczona do interakcyjnych konwersacji za pomocą czatu GitHub Copilot. Możesz zadawać pytania, uzyskiwać wyjaśnienia lub żądać sugestii w czasie rzeczywistym.

  1. Otwórz widok Czat i wybierz pozycję Zapytaj.

  2. Dodaj kontekst do czatu.

    Ask obsługuje uczestników czatu, komendy zaczynające się od ukośnika i zmienne czatu. Możesz dodać uczestnika czatu @workspace lub #codebase do czatu, aby zapewnić kontekst wraz z plikami lub folderami.

  3. Zadawaj pytania, które ułatwiają zrozumienie kodu, który chcesz refaktoryzować, oraz zmiany, które chcesz wprowadzić.

    Możesz na przykład poprosić GitHub Copilot o pomoc w zrozumieniu istniejącego kodu uwierzytelniania, jak zaktualizować bieżącą metodę przy użyciu protokołu OAuth.

  4. Skonstruuj monit opisujący aktualizację, którą chcesz zaimplementować.

    Monit powinien zawierać opis funkcji kodu, którą chcesz zaimplementować. Przykład:

    @workspace I need to refactor the `EnumHelper` class and remove any code that uses reflection. Use static dictionaries to supply enum description attributes. Use a separate dictionary for each enum. The dictionaries should use values from the `LoanExtensionStatus.cs`, `LoanReturnStatus.cs`, and `MembershipRenewalStatus.cs` files. Explain how to update the EnumHelper class using dictionaries and show me the updated code.
    
  5. Przejrzyj sugerowany kod w widoku czatu.

    Odpowiedź wyświetlana w widoku czatu będzie zawierać fragment kodu, którego można użyć do zaimplementowania tej funkcji. Możesz wprowadzić zaktualizowane komendy, aby doprecyzować kod lub poprosić o więcej szczegółów.

  6. Aby zaimplementować sugerowany kod, możesz umieścić wskaźnik myszy na fragmencie kodu, a następnie wybrać opcje Zastosuj, Wstaw i Kopiuj .

    • Zastosuj: stosuje sugestię kodu do bieżącego pliku w edytorze.
    • Wstaw: wstawia sugestię kodu w bieżącym położeniu kursora w edytorze.
    • Kopiuj: kopiuje sugestię kodu do schowka.
  7. Przetestuj refaktoryzowany kod, aby upewnić się, że działa bez błędów i generuje oczekiwany wynik.

Użyj planu do refaktoryzacji kodu

Agenta planu można użyć, jeśli chcesz utworzyć ustrukturyzowany, szczegółowy plan implementacji przed wprowadzeniem zmian. Agent planu analizuje bazę kodu, zadaje wyjaśnienia pytań i tworzy szczegółowy plan. Gdy plan wygląda prawidłowo, możesz przekazać go agentowi implementacji, aby go wykonać.

Wskazówka

Użyj funkcji Zapytaj, aby ocenić kod, który chcesz poddać refaktoryzacji, i rozważyć możliwości przed rozpoczęciem wprowadzania zmian. Możesz użyć opcji Plan, aby utworzyć plan ustrukturyzowany, a następnie przekazać go agentowi implementacji.

  1. Otwórz widok Czat i wybierz pozycję Plan.

  2. Dodaj kontekst do czatu.

    Określ kontekst obszaru roboczego przy użyciu polecenia #codebase i dodając pliki do czatu.

  3. Skonstruuj monit opisujący funkcję kodu, którą chcesz zaimplementować.

    Monit powinien zawierać opis funkcji kodu, którą chcesz zaimplementować. Przykład:

    
    #codebase I need to refactor the `EnumHelper` class and remove any code that uses reflection. Use static dictionaries to supply enum description attributes. Use a separate dictionary for each enum. The dictionaries should use values from the `LoanExtensionStatus.cs`, `LoanReturnStatus.cs`, and `MembershipRenewalStatus.cs` files.
    
    
  4. Przejrzyj ustrukturyzowany plan implementacji, który GitHub Copilot generuje.

    Agent planu tworzy plan krok po kroku, który można przejrzeć przed wprowadzeniem jakichkolwiek zmian w kodzie.

  5. Gdy plan wygląda prawidłowo, przekaż go agentowi implementacji, aby go wykonać.

    Możesz przekazać plan agentowi, aby zastosować zmiany do bazy kodu.

  6. Przejrzyj sugerowane zmiany w edytorze kodu.

  7. Zaakceptuj lub odrzuć sugerowane zmiany.

    Możesz przechodzić przez zmiany za pomocą strzałek w górę i w dół. Możesz zachować (zaakceptować) lub cofnąć (odrzucić) sugerowane edycje indywidualnie przy użyciu menu podręcznego wyświetlanego w każdej edycji. Możesz również zaakceptować lub odrzucić wszystkie zmiany jednocześnie przy użyciu przycisków Zachowaj i Cofnij w dolnej części karty edytora (lub widoku czatu).

  8. Przetestuj refaktoryzowany kod, aby upewnić się, że działa bez błędów i generuje oczekiwany wynik.

Refaktoryzacja kodu przy użyciu agenta

Agenta można użyć, gdy chcesz zautomatyzować proces refaktoryzacji kodu. Agent działa jako autonomiczny agent, który może podejmować działania w Twoim imieniu. Możesz poprosić GitHub Copilot o wykonanie określonych zadań i wygenerować kod na podstawie żądań.

Za pomocą agenta możesz użyć języka naturalnego, aby określić zadanie wysokiego poziomu i pozwolić GitHub Copilot samodzielnie zrozumieć żądanie, zaplanować potrzebną pracę i wprowadzić zmiany do kodu. Agent używa kombinacji edycji kodu i wywołania narzędzia do wykonania określonego zadania. W miarę przetwarzania żądania monitoruje wyniki edycji i narzędzi oraz iteruje, aby rozwiązać wszelkie występujące problemy.

Ważne

W przypadku korzystania z agenta GitHub Copilot może wysyłać wiele żądań premium do wykonania jednego zadania. Żądania Premium mogą być używane w przypadku monitów inicjowanych przez użytkownika oraz działań następczych podejmowanych przez GitHub Copilot w Twoim imieniu. Łączna liczba użytych żądań w warstwie Premium zależy od złożoności zadania, liczby zaangażowanych kroków i wybranego modelu.

  1. Otwórz widok Czat i wybierz pozycję Agent.

  2. Skonstruuj monit opisujący zadanie, które ma zostać wykonane GitHub Copilot.

    Załóżmy, że masz projekt kodu, który używa co najmniej dwóch procesów/technik do wykonania tego samego zadania. Możesz poprosić GitHub Copilot o refaktoryzację kodu przy użyciu jednego podejścia w celu zwiększenia spójności, konserwacji i wydajności.

    Przykład:

    
    Review the LINQ code used in the JsonData and JsonLoanRepository classes. Refactor the methods in the JsonPatronRepository class using LINQ queries. Ensure that existing code functionality is maintained.
    
    
  3. Agent może wywoływać wiele narzędzi do wykonywania różnych zadań. Opcjonalnie wybierz ikonę Narzędzia, aby skonfigurować narzędzia, których można użyć do odpowiadania na żądanie.

  4. Potwierdź wywołania narzędzi i polecenia terminalu.

    Zanim GitHub Copilot uruchomi polecenie terminalu lub narzędzie, które nie jest wbudowane, żąda potwierdzenia, aby kontynuować. Potwierdzenie jest wymagane, ponieważ narzędzia mogą działać lokalnie na maszynie i wykonywać akcje modyfikujące pliki lub dane.

  5. GitHub Copilot wykrywa problemy podczas edycji kodu i poleceń terminalu oraz wykonuje iteracje i podejmuje działania w celu ich rozwiązania.

    Ważne

    Chociaż GitHub Copilot jest w stanie samonaprawić, może nie zawsze być w stanie rozwiązać problemy samodzielnie. Możesz wstrzymać proces i podać więcej kontekstu, aby pomóc GitHub Copilot zrozumieć problem. Możesz również anulować proces i rozpocząć od nowa z nowym poleceniem.

  6. Przejrzyj sugerowane zmiany i zaakceptuj lub odrzuć sugerowane zmiany.

  7. Przetestuj refaktoryzowany kod, aby upewnić się, że generuje oczekiwany wynik.

    Agent powinien samodzielnie rozwiązywać problemy, ale nadal należy przetestować kod, aby upewnić się, że działa zgodnie z oczekiwaniami.

    Zmiany wprowadzone przez agenta można przywrócić przy użyciu przycisku Cofnij w widoku czatu. Możesz również użyć opcji Przywróć w edytorze, aby przywrócić zmiany wprowadzone przez agenta.

Kiedy wybrać agenta zamiast planu

Rozważ następujące kryteria, aby wybrać między Planem a Agentem:

  • Planowanie: Plan tworzy ustrukturyzowany plan implementacji krok po kroku przed napisaniem jakiegokolwiek kodu. Agent autonomicznie określa odpowiedni kontekst i pliki do edycji i rozpoczyna bezpośrednie wprowadzanie zmian.
  • Złożoność zadania: Agent lepiej nadaje się do złożonych zadań wymagających zarówno edycji kodu, jak i wywołania narzędzi lub poleceń terminalu.
  • Czas trwania: Agent używa wielu kroków do przetworzenia żądania, więc wygenerowanie odpowiedzi może potrwać dłużej. Na przykład, aby określić odpowiedni kontekst i pliki do edycji, określić plan działania i nie tylko.
  • Samonaprawianie: Agent ocenia wynik wygenerowanych edycji i może iterować wiele razy, aby rozwiązać problemy pośrednie.
  • Limit liczby żądań: W przypadku korzystania z trybu agenta, w zależności od złożoności zadania, jeden monit może spowodować wiele żądań do zaplecza.

Podsumowanie

GitHub Copilot można użyć do refaktoryzacji kodu w bazie kodu. Za pomocą agentów widoku czatu można analizować, planować i implementować zadania refaktoryzacji kodu. Widok czatu obejmuje trzech wbudowanych agentów: Zapytaj, Zaplanuj i Agent. Możesz użyć funkcji Zadaj pytania dotyczące bazy kodu lub pojęć technologicznych. Plan umożliwia utworzenie planu implementacji ustrukturyzowanej przed napisaniem kodu. Możesz użyć agenta, aby uruchomić agentowy przepływ pracy kodowania.