Refaktoryzuj duże funkcje, używając trybu agenta GitHub Copilot

Ukończone

Korzystanie z trybu agenta Copilot w usłudze GitHub przypomina asystenta, który zawsze tam pomaga w tworzeniu i utrzymywaniu kodu.

W trybie agenta zadania są przypisywane do narzędzia GitHub Copilot przy użyciu monitów języka naturalnego w panelu czatu. Narzędzie GitHub Copilot rozpoczyna się od analizy bazy kodu przy użyciu przydzielonego zadania w celu ustalenia niezbędnego kontekstu. Agent generuje plan realizacji zadania i wyświetla listę wymaganych podzadań. Następnie otwiera i edytuje skojarzone pliki w edytorze kodu. Agent wykonuje analizę, planowanie i implementację autonomicznie i udostępnia uruchomiony komentarz na panelu czatu, dzięki czemu można monitorować jego postęp. W razie potrzeby agent prosi o wyjaśnienie, dodatkowe informacje lub pozwolenie na kontynuowanie określonej akcji. Po zakończeniu zadania przez agenta możesz przejrzeć zmiany i zatwierdzić (lub odrzucić) poszczególne zmiany. Pozostajesz pod kontrolą w całym procesie.

Najlepsze rozwiązania

Rozważ następujące porady, aby jak najlepiej wykorzystać tryb agenta:

  • Przerwij refaktoryzację na małe kroki.
  • Dokładnie przejrzyj każdą zmianę.
  • Kompilowanie i testowanie po każdym kroku.

Typowe polecenia refaktoryzacji

Oto kilka przykładowych monitów dotyczących typowych zadań refaktoryzacji:

  • "Wyodrębnij wybrany kod weryfikacji do nowej metody prywatnej o nazwie ValidateOrder , która przyjmuje parametr Order i zwraca wartość logiczną. Upewnij się, że cała logika walidacji została przeniesiona, a oryginalne miejsce wywołania właściwie używa wartości zwracanej.
  • "Przejrzyj wybrany kod. Zidentyfikuj i wyodrębnij całą powtarzaną logikę obliczania podatku do nowej prywatnej metody CalculateTax statycznej, która przyjmuje niezbędne parametry (kwota, taxRate, region) i zwraca obliczoną kwotę podatku. Zastąp wszystkie zduplikowane obliczenia wywołaniami tej metody.
  • "Przejrzyj wybrany kod. Przekonwertuj ten łańcuch if/else na nowoczesne wyrażenie przełącznika, zapewniając, że wszystkie przypadki są objęte, a logika pozostaje równoważna. Używaj dopasowania wzorca, jeśli jest to konieczne, i zachowaj ten sam typ zwracany.
  • "Przejrzyj wybrany kod. Wyodrębnij wszystkie ceny i łączne obliczenia do nowej prywatnej metody ComputeTotals , która przyjmuje parametr Order, wykonuje wszystkie obliczenia i aktualizuje łączne właściwości zamówienia. Upewnij się, że żadna logika obliczeń nie pozostaje w oryginalnej metodzie.

Przykładowy przepływ pracy

Załóżmy, że masz dużą funkcję ProcessOrder , która obsługuje przetwarzanie zamówień, w tym walidację, obliczenia cen, zapisywanie w bazie danych i wysyłanie powiadomień. Funkcja jest zbyt długa, ma ponad 200 wierszy i powinna zostać podzielona.

Aby refaktoryzować funkcję, możesz wykonać następujące czynności:

  1. Wyodrębnij pierwszy segment:

    Wyodrębnij walidację danych wejściowych u góry ProcessOrder do nowej metody ValidateOrder(order), która zwraca typ bool.

  2. Wyodrębnij drugi segment:

    Przenieś obliczenia cen do nowej metody ComputeTotals(order), aktualizującej element order.Total.

  3. Obsługa pozostałej logiki:

    Wyodrębnij logikę zapisu i powiadomień w podobny sposób lub pozostaw ją w funkcji main, jeśli jest teraz krótka i jasna.

  4. Czyszczenie:

    Zmień nazwy zmiennych, usuń nieużywany kod i zapewnij spójność.

Zastosuj sugestie dotyczące trybu zapytań

Podział trybu zapytań służy do obsługi trybu agenta:

  • Przejrzyj plan zaproponowany przez tryb pytań oraz swoje dalsze pytania.
  • Sformułuj ostateczny plan refaktoryzacji dla trybu agenta.
  • Użyj analizy z trybu zapytaj, aby utworzyć serię przejrzystych, konkretnych monitów dla trybu agenta. W razie potrzeby użyj sugerowanych nazw funkcji i list parametrów w monitach.

Wskazówka

Traktuj tryb agenta jak młodszego programistę w swoim zespole. Podaj jasne instrukcje, przejrzyj swoją pracę i popraw je zgodnie z potrzebami.

Co należy obejrzeć podczas przeglądu

Zawsze przejrzyj zmiany wprowadzone przez agenta. Rozważmy następującą listę kontrolną:

  • Zachowywanie logiki: Upewnij się, że żadne zachowanie nie zostało zmienione.
  • Obsługa parametrów: Copilot może zapomnieć o przekazaniu wymaganej zmiennej.
  • Modyfikatory nazewnictwa i dostępu: Upewnij się, że pasują one do stylu bazy kodu.
  • Pominięte wiersze: Jeśli copilot pomija wiersz, ręcznie przenieś go lub poproś ponownie.

Zarządzanie nieoczekiwanymi wynikami

Gdy agent generuje wynik, który nie jest oczekiwany:

  • Cofnij zmianę lub przywróć plik.
  • Spróbuj wykonać mniejszy krok lub bardziej precyzyjny monit.
  • Rozwiąż drobne problemy ręcznie lub poproś Copilot o ich rozwiązanie.

Podsumowanie

Korzystanie z trybu agenta Copilot w usłudze GitHub usprawnia proces refaktoryzacji dużych funkcji. Dzieląc zadanie na możliwe do zarządzania kroki i korzystając z monitów języka naturalnego, utrzymujesz nadzór, pozwalając agentowi na wykonywanie trudnych zadań. Zawsze uważnie przeglądaj zmiany, aby zapewnić jakość kodu i integralność logiki.