Przejdź do głównej zawartości

Strategie Edycji Inline: Wskazówki 46-60

Zaznaczasz funkcję, naciskasz Cmd+K, wpisujesz “zrób to lepiej” i otrzymujesz coś marginalnie innego, co może, ale nie musi być poprawą. Edycja inline wydaje się rzutem monetą. Problem nie tkwi w funkcji — tkwi w tym, że edycja inline reaguje na precyzję. Daj jej niejasną instrukcję, a otrzymasz niejasny rezultat. Daj jej konkretną transformację, a otrzymasz dokładnie to, o co prosiłeś, często w mniej niż dwie sekundy. Te 15 wskazówek nauczy cię być precyzyjnym.

  • Strategię selekcji, która określa 80% jakości edycji inline, zanim wpiszesz choćby jedno słowo
  • Gotowe wzorce promptów dla najczęstszych transformacji (obsługa błędów, migracja TypeScript, generowanie testów)
  • Technikę łańcuchową, która dzieli złożone refaktoryzacje na małe, weryfikowalne kroki
  • Jasne zasady, kiedy Cmd+K przewyższa tryb agenta i kiedy należy przełączyć się na niego

Wskazówka 46: Dopasuj zakres selekcji do swojego zamiaru

Dział zatytułowany „Wskazówka 46: Dopasuj zakres selekcji do swojego zamiaru”

Kod, który zaznaczasz przed naciśnięciem Cmd+K, definiuje granicę transformacji. Edycja inline nie dotknie kodu poza twoją selekcją. To zarówno jej siła, jak i ograniczenie.

Brak selekcji (kursor na pustej linii): Cmd+K generuje nowy kod w pozycji kursora. Użyj tego do wstawienia funkcji, bloku lub deklaracji z opisu.

Zaznaczona pojedyncza linia: Cmd+K przepisuje tę jedną linię. Użyj tego do zmiany nazwy zmiennej, dostosowania warunku lub zastąpienia wartości zwracanej.

Zaznaczona cała funkcja: Cmd+K przepisuje całą funkcję, zachowując jej sygnaturę i rolę w pliku. Użyj tego do dodania obsługi błędów, konwersji wzorców lub restrukturyzacji logiki.

Zaznaczone wiele funkcji: Cmd+K traktuje całą selekcję jako jedną jednostkę transformacji. Użyj tego do spójnych zmian w powiązanych funkcjach (np. “dodaj logowanie do wszystkich trzech handlerów”).

Jeśli twoja funkcja zależy od typów, stałych lub importów zdefiniowanych powyżej, uwzględnij je w selekcji. Bez tego kontekstu Cmd+K może wygenerować kod, który używa złych typów lub ponownie deklaruje stałe.

// ŹLE: Zaznacz tylko ciało funkcji
// Cmd+K nie widzi typu UserRole
// DOBRZE: Zaznacz typ I funkcję razem
type UserRole = "admin" | "editor" | "viewer";
function getPermissions(role: UserRole) {
// ... Cmd+K może teraz poprawnie odwoływać się do UserRole
}

Gdy kontekst jest zbyt daleko, aby uwzględnić go w selekcji (np. zaimportowany typ z innego pliku), wymień go wyraźnie w swojej instrukcji: “Typ User ma pola id, email, name i role.”

Wskazówka 48: Użyj Cmd+K na pustej linii do generowania kodu

Dział zatytułowany „Wskazówka 48: Użyj Cmd+K na pustej linii do generowania kodu”

Gdy kursor znajduje się na pustej linii bez selekcji, Cmd+K staje się generatorem kodu. Jest to szybsze niż otwieranie panelu agenta dla małych, zwartych bloków kodu:

Kluczowa różnica względem trybu agenta: Cmd+K wstawia kod w pozycji kursora w bieżącym pliku. Nie tworzy nowych plików, nie modyfikuje importów w innych plikach ani nie uruchamia poleceń terminala. To ograniczenie czyni go szybszym i bardziej przewidywalnym.

Wskazówka 49: Bądź konkretny co do transformacji, nie co do kodu

Dział zatytułowany „Wskazówka 49: Bądź konkretny co do transformacji, nie co do kodu”

Najlepsze prompty Cmd+K opisują co zmienić, nie jak powinien wyglądać końcowy kod. Powiedz mu transformację i pozwól mu znaleźć implementację.

Niejasne: “Zrób to lepiej” Konkretne: “Dodaj walidację wejścia dla null, undefined i pustego stringa. Rzuć TypeError z opisową wiadomością dla każdego przypadku.”

Niejasne: “Zoptymalizuj” Konkretne: “Zastąp zagnieżdżone pętle for podejściem opartym na Set, aby zredukować złożoność czasową z O(n^2) do O(n).”

Niejasne: “Napraw typy” Konkretne: “Dodaj typy TypeScript do wszystkich parametrów i wartości zwracanej. Użyj ścisłych typów — bez ‘any’. Wywnioskuj typ zwracany z implementacji.”

Wskazówka 50: Odwołaj się do istniejących wzorców w tym samym pliku

Dział zatytułowany „Wskazówka 50: Odwołaj się do istniejących wzorców w tym samym pliku”

Gdy twój plik już ma ustalony wzorzec, odwołaj się do niego wyraźnie:

Edycja inline widzi cały plik, więc znajdzie handleUserCreation, przeanalizuje jej wzorzec obsługi błędów i zreplikuje go w twojej selekcji. Daje to znacznie bardziej spójny kod niż opisywanie wzorca od podstaw.

Wskazówka 51: Użyj “Konwertuj X na Y” dla transformacji strukturalnych

Dział zatytułowany „Wskazówka 51: Użyj “Konwertuj X na Y” dla transformacji strukturalnych”

Wzorzec “konwertuj” to jeden z najbardziej niezawodnych promptów Cmd+K, ponieważ daje jasny stan przed i po:

  • “Konwertuj tę funkcję opartą na callback na async/await”
  • “Konwertuj ten komponent klasowy na komponent funkcyjny z hookami”
  • “Konwertuj tę instrukcję switch na wyszukiwanie obiektowe”
  • “Konwertuj tę imperatywną pętlę na łańcuch funkcyjny (map, filter, reduce)”
  • “Konwertuj ten JavaScript na TypeScript ze ścisłymi typami”
// Zaznacz komponent klasowy, Cmd+K:
// "Konwertuj na komponent funkcyjny z hookami, zachowując całe zachowanie cyklu życia"
// Zaznacz handler endpointu REST, Cmd+K:
// "Konwertuj, aby używać walidacji zod dla ciała żądania"
// Zaznacz model Mongoose, Cmd+K:
// "Konwertuj na definicję schematu Drizzle ORM"

Wskazówka 52: Rozłóż złożone zmiany na sekwencyjne kroki Cmd+K

Dział zatytułowany „Wskazówka 52: Rozłóż złożone zmiany na sekwencyjne kroki Cmd+K”

Zamiast jednego masywnego promptu, użyj sekwencji małych, weryfikowalnych edycji. Każdy krok bazuje na poprzednim i możesz weryfikować poprawność między krokami:

  1. Pierwsza edycja: “Dodaj typy TypeScript do wszystkich parametrów i wartości zwracanej”
  2. Weryfikacja: Sprawdź, czy typy są poprawne
  3. Druga edycja: “Dodaj walidację wejścia dla każdego parametru używając typów zdefiniowanych powyżej”
  4. Weryfikacja: Sprawdź, czy walidacja pasuje do ograniczeń typów
  5. Trzecia edycja: “Dodaj obsługę błędów z try-catch. Loguj błędy z nazwą funkcji i parametrami.”
  6. Weryfikacja: Sprawdź logikę obsługi błędów
  7. Czwarta edycja: “Dodaj dokumentację JSDoc opartą na typach i walidacji”
  8. Weryfikacja: Końcowy przegląd kompletnej funkcji

Ten łańcuch daje lepsze rezultaty niż pojedynczy prompt mówiący “dodaj typy, walidację, obsługę błędów i dokumentację”, ponieważ każdy krok ma pełny kontekst z poprzednich kroków.

Wskazówka 53: Użyj Cmd+K do iteracji nad wynikiem agenta

Dział zatytułowany „Wskazówka 53: Użyj Cmd+K do iteracji nad wynikiem agenta”

Tryb agenta generuje kod szybko, ale czasami pomija twoje specyficzne konwencje. Użyj Cmd+K jako przejście udoskonalające:

  1. Agent generuje nowy moduł z wieloma funkcjami
  2. Zaznacz pierwszą funkcję, Cmd+K: “Zmień nazwy parametrów, aby pasowały do naszej konwencji nazewnictwa: użyj camelCase, poprzedź wartości boolean ‘is’ lub ‘has’”
  3. Zaznacz obsługę błędów, Cmd+K: “Zastąp generyczne rzuty Error naszą klasą AppError z @lib/errors”
  4. Zaznacz typ zwracany, Cmd+K: “Owiń wartość zwracaną w nasz standardowy typ ApiResponse”

Ten przepływ pracy “najpierw agent, potem udoskonalenie Cmd+K” jest szybszy niż doprowadzanie trybu agenta do idealnego wyniku za pierwszym razem.

Wskazówka 54: Dodaj obsługę błędów do kodu happy-path

Dział zatytułowany „Wskazówka 54: Dodaj obsługę błędów do kodu happy-path”

Najczęstszy wzorzec edycji inline. Zaznacz funkcję, która obsługuje tylko przypadek sukcesu i przekształć ją:

Wskazówka 55: Konwertuj JavaScript na ścisły TypeScript

Dział zatytułowany „Wskazówka 55: Konwertuj JavaScript na ścisły TypeScript”

Zaznacz funkcję lub moduł JavaScript, następnie:

Zaznacz funkcję pełną zakodowanych na twardo wartości:

Wskazówka 57: Dodaj wzorce programowania defensywnego

Dział zatytułowany „Wskazówka 57: Dodaj wzorce programowania defensywnego”

Zaznacz kod, który zakłada, że wejścia są zawsze prawidłowe:

Wskazówka 58: Generuj przypadki testowe z implementacji

Dział zatytułowany „Wskazówka 58: Generuj przypadki testowe z implementacji”

Zaznacz funkcję i wygeneruj jej testy w miejscu (przydatne, gdy chcesz testy w tym samym pliku lub chcesz je skopiować do pliku testowego):

Wskazówka 59: Zawsze przeglądaj diff przed zaakceptowaniem

Dział zatytułowany „Wskazówka 59: Zawsze przeglądaj diff przed zaakceptowaniem”

Po tym, jak Cmd+K wygeneruje transformację, Cursor pokazuje widok różnic. Nie akceptuj na ślepo. Skanuj w poszukiwaniu:

  • Zmienionej logiki, która modyfikuje zachowanie w sposób, którego nie zamierzałeś
  • Usuniętego kodu, który był ważny, ale wyglądał na redundantny dla AI
  • Dodanych zależności, których nie chcesz (nowe importy, nowe pakiety)
  • Niespójności stylu, które nie pasują do konwencji twojego projektu

Możesz zaakceptować lub odrzucić całą różnicę lub w niektórych przypadkach wprowadzić ręczne edycje do różnicy przed zaakceptowaniem.

Wskazówka 60: Wiedz, kiedy przełączyć się z Cmd+K na tryb agenta

Dział zatytułowany „Wskazówka 60: Wiedz, kiedy przełączyć się z Cmd+K na tryb agenta”

Cmd+K jest właściwym wyborem, gdy:

  • Zmiana ogranicza się do pojedynczego pliku
  • Możesz zaznaczyć odpowiedni kod
  • Transformacja jest dobrze zdefiniowana
  • Chcesz szybkiej odpowiedzi (1-3 sekundy)

Przełącz się na tryb agenta, gdy:

  • Zmiana obejmuje wiele plików
  • Potrzebujesz poleceń terminala do weryfikacji zmiany (testy, buildy)
  • Zmiana wymaga zrozumienia kodu, którego nie możesz zaznaczyć (zależności w innych plikach)
  • Chcesz, aby AI iterowało autonomicznie (cykl pisz, testuj, napraw)

Zasada praktyczna: jeśli twój prompt Cmd+K jest dłuższy niż 3 zdania, prawdopodobnie potrzebujesz trybu agenta.

Cmd+K przepisuje więcej niż oczekiwałeś: Twoja selekcja była zbyt szeroka. Powtórz z węższą selekcją. Zaznacz tylko linie, które wymagają zmiany, nie całą funkcję.

Cmd+K nie rozumie typu z innego pliku: Edycja inline widzi bieżący plik, ale nie sprawdza zależności międzyplikowych. Albo uwzględnij definicję typu w tekście promptu, albo przełącz się na tryb agenta, który może czytać inne pliki.

Diff wygląda dobrze, ale psuje zachowanie w runtime: Cmd+K może wprowadzić subtelne błędy podczas transformacji kodu stanowego (hooki React, domknięcia z przechwyconymi zmiennymi). Po zaakceptowaniu edycji Cmd+K na kodzie stanowym zawsze uruchom testy przed przejściem dalej.

Łańcuchowe edycje dają niespójne rezultaty: Jeśli każda edycja w łańcuchu zaprzecza poprzedniej (np. “dodaj logowanie”, a potem “usuń wszystkie efekty uboczne”), kod staje się niespójny. Zaplanuj swój łańcuch tak, aby każdy krok budował na poprzednim bez cofania go.

Gdy opanujesz edycję inline, przejdź do Optymalizacji agenta i chatu (Wskazówki 61-75), aby poznać operacje na wielu plikach, promptowanie oparte na testach i autonomiczne przepływy pracy, które obsługują wszystko, czego Cmd+K nie może.