Refaktoryzuj duże funkcje, używając trybu agenta GitHub Copilot
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
CalculateTaxstatycznej, 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:
Wyodrębnij pierwszy segment:
Wyodrębnij walidację danych wejściowych u góry
ProcessOrderdo nowej metodyValidateOrder(order), która zwraca typ bool.Wyodrębnij drugi segment:
Przenieś obliczenia cen do nowej metody
ComputeTotals(order), aktualizującej elementorder.Total.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.
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.