Produktivní.cz — rychleji každý den
Pro profesiUčiteléStudentiManažeřiMarketingVývojářiFreelanceřiRodiče

Tipy & triky · Zkratky · Všude · ~10 min týdně · 2 min čtení

F2 přejmenuje funkci v celém projektu — bez hledání a nahrazování

Naposledy ověřeno:

F2

Ilustrace k článku: F2 přejmenuje funkci v celém projektu — bez hledání a nahrazování

Špatně pojmenovaná funkce zůstává špatně pojmenovaná hlavně proto, že ji nikdo nechce přejmenovávat: používá se na dvaceti místech v osmi souborech a „najít a nahradit“ je ruleta — přepíše i řetězce, komentáře a nesouvisející slova, která jen vypadají stejně. Editor to přitom umí bezpečně: postavte kurzor na název a stiskněte F2. VS Code přes jazykovou analýzu pozná všechna místa, kde se přesně tento symbol skutečně používá, a přejmenuje je najednou — v celém projektu, ne jen v otevřeném souboru.

Jak na to

  1. Klikněte kurzorem na název funkce, proměnné, třídy nebo parametru — kdekoli, kde se vyskytuje, nemusí to být místo definice.
  2. Stiskněte F2 (příkaz se jmenuje Rename Symbol, najdete ho i v nabídce po pravém kliknutí). Objeví se políčko s aktuálním názvem.
  3. Napište nový název a potvrďte Enter — editor upraví definici i všechna použití napříč soubory projektu. Změněné soubory se označí jako neuložené, takže výsledek vidíte a můžete ho jedním Ctrl+Z celý vrátit.
  4. Chcete-li si napřed prohlédnout, co všechno se změní, potvrďte místo Enteru přes Ctrl + Enter — otevře se náhled všech chystaných změn k odsouhlasení.
  5. V JetBrains IDE (IntelliJ, WebStorm, PyCharm, Rider) dělá totéž Shift + F6. Princip je stejný: přejmenování řídí porozumění kódu, ne shoda textu.

Vzorová situace

Vývojář zdědil projekt, kde se klíčová funkce jmenuje process2 — název, který neříká nic a plete každého nováčka. S hledáním a nahrazováním by riskoval, že přepíše i process2 v logovacích řetězcích nebo zapomene na soubor, který nemá otevřený. S F2 postaví kurzor na název, napíše calculateMonthlyInvoice, Enter — a během vteřiny je změna provedená ve všech dvanácti souborech, včetně importů. Nic víc, nic míň: řetězce a komentáře s podobným textem zůstaly netknuté.

Rozdíl oproti multi-kurzoru je v záběru: multi-kurzor je skvělý na úpravy v jednom souboru, které vidíte před sebou, F2 na přejmenování napříč celým projektem, kam nedohlédnete. Kvalita výsledku závisí na jazykové podpoře — u jazyků se silnou analýzou (TypeScript, C#, Java, Rust) je přejmenování prakticky neomylné, u dynamičtějších jazyků se vyplatí projít náhled změn před potvrzením.

Co vám to přinese

Přejmenování přestane být riskantní operace, a tak ho začnete skutečně dělat — kód se postupně dopracuje k názvům, které něco říkají. Ušetříte minuty při každém refaktoringu a hlavně eliminujete třídu chyb „nahradilo se i to, co nemělo“, kterou klasické hledání a nahrazování vyrábí spolehlivě.