Edytowanie i refaktoryzacja kodu C++ w programie Visual Studio
Program Visual Studio udostępnia kilka narzędzi, które ułatwiają pisanie, edytowanie i refaktoryzację kodu.
IntelliSense
IntelliSense to zaawansowane narzędzie do uzupełniania kodu, które sugeruje symbole i fragmenty kodu podczas wpisywania. Funkcja IntelliSense w języku C++ w programie Visual Studio działa w czasie rzeczywistym, analizując bazę kodu podczas aktualizowania i dostarczania zaleceń. Podczas wpisywania większej liczby znaków lista zalecanych wyników jest zawężana.
Niektóre symbole są pomijane automatycznie, aby ułatwić zawężenie wyników. Na przykład podczas uzyskiwania dostępu do składowych obiektu klasy spoza klasy nie będzie można domyślnie wyświetlać prywatnych elementów członkowskich ani chronionych elementów członkowskich (jeśli nie jesteś w kontekście klasy podrzędnej). Filtrowanie można dostosować przy użyciu przycisków u dołu.
Po wybraniu symbolu z listy rozwijanej możesz ją automatycznie uzupełnić za pomocą klawisza Tab, Enter lub jednego z innych znaków zatwierdzenia (domyślnie: { } [ ] ( ) . , : ; + - * / % & | ^ ! = ? @ # \
). Aby dodać lub usunąć znaki z tej listy, wyszukaj ciąg "IntelliSense" w obszarze Szybkie uruchamianie (Ctrl + Q) i wybierz opcję Edytor > tekstów C/C++ > Advanced . Opcja Znaki zatwierdzenia listy elementów członkowskich umożliwia dostosowanie listy przy użyciu żądanych zmian.
Opcja Tryb filtrowania listy elementów członkowskich określa, jakie rodzaje sugestii automatycznego uzupełniania funkcji IntelliSense są widoczne. Domyślnie jest ona ustawiona na Rozmytą. W wyszukiwaniu rozmytym, jeśli masz symbol o nazwie MyAwesomeClass, możesz wpisać "MAC" i znaleźć klasę w sugestiach autouzupełniania. Algorytm rozmyty ustawia minimalny próg, który symbole muszą spełniać, aby wyświetlić się na liście. Filtrowanie inteligentne wyświetla wszystkie symbole zawierające podciąg, które pasują do wpisanego elementu. Filtrowanie prefiksów wyszukuje ciągi rozpoczynające się od wpisanego tekstu.
Aby uzyskać więcej informacji na temat funkcji IntelliSense języka C++, zobacz Visual C++ IntelliSense i Configure a C++ project for IntelliSense (Konfigurowanie projektu C++ dla funkcji IntelliSense).
IntelliCode
IntelliCode to funkcja IntelliSense wspomagana przez sztuczną inteligencję. Najbardziej prawdopodobnym kandydatem na początku listy ukończenia. Zalecenia funkcji IntelliCode są oparte na tysiącach projektów open source w usłudze GitHub z ponad 100 gwiazdkami. W połączeniu z kontekstem kodu lista uzupełniania jest dostosowana do promowania typowych rozwiązań.
Podczas pisania języka C++funkcja IntelliCode pomoże w korzystaniu z popularnych bibliotek, takich jak biblioteka standardowa języka C++. Kontekst kodu służy do pierwszego udostępnienia najbardziej przydatnych zaleceń. W poniższym przykładzie size
funkcja składowa jest często używana z funkcją sort
, więc jest ona uwidoczniena na początku listy wyników.
W programach Visual Studio 2022 i Visual Studio 2019 funkcja IntelliCode jest dostępna jako składnik opcjonalny w obciążeniu Programowanie aplikacji klasycznych języka C++ . Aby upewnić się, że funkcja IntelliCode jest aktywna dla języka C++, przejdź do pozycji Narzędzia>Opcje>intelliCode>Ogólne i ustaw model podstawowy języka C++ na Włączone.
W programie Visual Studio 2017 funkcja IntelliCode jest dostępna jako rozszerzenie w witrynie Visual Studio Marketplace.
Predykcyjna funkcja IntelliSense (eksperymentalna)
Funkcja IntelliSense predykcyjna to funkcja eksperymentalna, która używa świadomości kontekstowej w celu ograniczenia liczby wyników wyświetlanych na liście rozwijanej IntelliSense. Algorytm stosuje dopasowanie typu, aby pokazywał tylko te wyniki zgodne z oczekiwanym typem. W najprostszym przypadku, jeśli wpiszesz int x =
i wywołasz listę rozwijaną IntelliSense, zobaczysz tylko liczby całkowite lub funkcje zwracające liczby całkowite. Ta funkcja jest domyślnie wyłączona, ponieważ jest ona nadal opracowywana. Działa najlepiej z symbolami globalnymi; funkcje składowe nie są jeszcze obsługiwane. Możesz ją włączyć, wpisując "Predykcyjne" w obszarze Szybkie uruchamianie lub przechodząc do pozycji Narzędzia>Opcje>Edytor> tekstuC/C++>Eksperymentalnafunkcja IntelliSense włączania predykcyjnego>.
Aby zastąpić funkcję IntelliSense predykcyjną i wyświetlić dłuższą listę, naciśnij klawisze Ctrl + J. Jeśli funkcja IntelliSense predykcyjna jest włączona, wywołanie klawiszy Ctrl + J spowoduje usunięcie filtru predykcyjnego. Naciśnięcie klawiszy Ctrl + J ponownie powoduje usunięcie filtru ułatwień dostępu z wyników listy elementów członkowskich, jeśli ma to zastosowanie. Przycisk ([+]) na liście rozwijanej IntelliSense wykonuje to samo, co Ctrl + J. Umieść kursor na przycisku, aby wyświetlić informacje o wyświetlanych etykietkach narzędzi.
Powyższy zrzut ekranu przedstawia kilka przycisków na liście rozwijanej. Umożliwiają one filtrowanie IntelliSense dla różnych rodzajów wyników:
- Zmienne i stałe
- Funkcje
- Typy
- Makra
- Wyliczenia
- Przestrzenie nazw
Przycisk jest wyświetlany tylko wtedy, gdy jest on odpowiedni dla bieżącej sesji funkcji IntelliSense. Zwykle nie widać wszystkich przycisków jednocześnie.
Funkcja IntelliSense szablonu
Pasek szablonu to element interfejsu użytkownika, który pojawia się, gdy kursor znajduje się w definicji szablonu. Jest to przydatne, ponieważ można podać przykładowe argumenty szablonu dla funkcji IntelliSense, które będą wyświetlane podczas edytowania treści szablonu. Można na przykład określić, że argument szablonu ma typ std::vector<int>
. Następnie, gdy użyjesz tego argumentu w treści szablonu, zobaczysz członków std::vector<int>
funkcji IntelliSense.
Kliknij ikonę T>,< aby rozwinąć/zwinąć pasek szablonu. Kliknij ikonę ołówka lub kliknij dwukrotnie pasek szablonu , aby otworzyć okno Edycja , w którym określisz typy argumentów dla parametrów.
Pasek szablonu może automatycznie wypełniać typy parametrów na podstawie wystąpień szablonu w kodzie. Kliknij pozycję Dodaj wszystkie istniejące wystąpienia , aby wyświetlić listę wszystkich konkretnych argumentów, które zostały użyte do utworzenia wystąpienia szablonu w całej bazie kodu.
Okno w dolnej części edytora pokazuje, gdzie znaleziono każde wystąpienie i jakie były jego argumenty. Możesz wybrać wystąpienie, aby przejść do lokalizacji w kodzie, w której znaleziono wystąpienie.
Informacje o pasku szablonu są specyficzne dla użytkownika. Jest on przechowywany w folderze .vs
i nie jest zatwierdzony do kontroli źródła.
Błędy wywija się i szybkie poprawki
Jeśli edytor wykryje problemy z kodem, doda kolorowe wywiórki w ramach problemu. Czerwone wywiórki wskazują kod, który nie zostanie skompilowany. Zielone wywiórki wskazują na inne rodzaje problemów, które nadal mogą być potencjalnie poważne. Możesz otworzyć okno Lista błędów , aby uzyskać więcej informacji o problemach.
W przypadku niektórych rodzajów błędów i typowych wzorców kodowania edytor oferuje szybką poprawkę w postaci żarówki, która pojawia się po umieszczeniu wskaźnika myszy na wywijanie. Kliknij strzałkę w dół, aby wyświetlić sugestie.
W poniższym przykładzie vector
zadeklarowano, ale nie znaleziono definicji, więc edytor oferuje dołączenie niezbędnego pliku nagłówka:
Edytor oferuje również szybkie poprawki dla niektórych możliwości refaktoryzacji. Jeśli na przykład zadeklarujesz klasę w pliku nagłówkowym, program Visual Studio zaoferuje utworzenie definicji dla niej w osobnym pliku cpp.
Śledzenie zmian
Za każdym razem, gdy wprowadzisz zmianę w pliku, żółty pasek pojawi się po lewej stronie, aby wskazać, że wprowadzono niezapisane zmiany. Po zapisaniu pliku pasek zmieni kolor na zielony. Zielone i żółte paski są zachowywane tak długo, jak dokument jest otwarty w edytorze. Reprezentują one zmiany wprowadzone od czasu ostatniego otwarcia dokumentu.
Przenoszenie kodu
Możesz przenosić wiersze kodu w górę i w dół, wybierając je, przytrzymując klawisze Alt i naciskając klawisze strzałki w górę /w dół .
Wstaw fragmenty kodu
Fragment kodu jest wstępnie zdefiniowanym fragmentem kodu źródłowego. Kliknij prawym przyciskiem myszy pojedynczy punkt lub zaznaczony tekst, a następnie wybierz pozycję Fragment kodu, aby wstawić fragment kodu lub otaczać zaznaczony tekst fragmentem kodu. Na poniższej ilustracji przedstawiono trzy kroki otaczające wybraną instrukcję z pętlą for. Żółte wyróżnienia na ostatnim obrazie to pola edytowalne, do których uzyskujesz dostęp za pomocą klawisza tabulacji. Aby uzyskać więcej informacji, zobacz Fragmenty kodu.
Wybrano funkcję. Na liście rozwijanej wyświetlanej po kliknięciu prawym przyciskiem myszy nazwy funkcji Otocz z... jest wyróżniony kolorem żółtym. Na liście rozwijanej Otocz z: zaznaczono fragment kodu dla pętli "for". Powoduje to umieszczenie pętli for wokół funkcji. Zmienna i limit pętli są wyświetlane w kolorze żółtym, aby wskazać, że są to pola edytowalne.
Dodaj klasę
Dodaj nową klasę z menu Project lub z menu kontekstowego w Eksplorator rozwiązań:
Możesz również użyć Kreatora klas, aby zmodyfikować lub zbadać istniejącą klasę.
Aby uzyskać więcej informacji, zobacz Dodawanie funkcji za pomocą kreatorów kodu (C++).
Refaktoryzacja
Refaktoryzacje są dostępne w menu kontekstowym Szybkie działanie lub klikając żarówkę w edytorze. Niektóre znajdują się również w menu Edytuj > refaktoryzację . Są one następujące:
- Zmień nazwę
- Wyodrębnianie funkcji
- Implementowanie czystych maszyn wirtualnych
- Tworzenie deklaracji/definicji
- Przenieś definicję funkcji
- Konwertowanie na nieprzetworzone literał ciągu
- Zmień podpis
Wymuszanie stylu kodu za pomocą narzędzi ClangFormat i EditorConfig
Program Visual Studio 2017 lub nowszy jest wyposażony we wbudowaną obsługę formatu ClangFormat, popularnego narzędzia formatowania kodu dla języka C++ opartego na języku Clang/LLVM. Wpisz ciąg "ClangFormat" w obszarze Szybkie uruchamianie , aby ustawić go tak, aby używał jednego z tych typowych formatów:
- LLVM
- Chrom
- Mozilla
- Webkit
- Visual Studio
Możesz również podać własny .clang-format
plik lub _clang-format
zastosować reguły niestandardowe do wszystkich plików kodu na tym samym poziomie lub poniżej.
Pliki można łatwo udostępniać za pośrednictwem kontroli źródła, dzięki czemu można wymusić konwencje kodowania w całym zespole deweloperów.
Program Visual Studio 2017 lub nowszy obsługuje również narzędzie EditorConfig, które działa w podobny sposób. Format ClangFormat ma jednak więcej opcji stylu niż EditorConfig, w tym reguły specyficzne dla języka C++. Za pomocą polecenia EditorConfig można tworzyć pliki .editorconfig i umieszczać je w różnych folderach bazy kodu w celu określenia stylów kodu dla tych folderów i ich podfolderów. Plik .editorconfig zastępuje wszystkie inne pliki .editorconfig w folderach nadrzędnych i zastępuje wszystkie ustawienia formatowania skonfigurowane za pomocą opcji narzędzi>. Możesz ustawić reguły dla kart i spacji, rozmiar wcięcia i nie tylko. Aby uzyskać więcej informacji, zobacz Create portable, custom editor settings with EditorConfig (Tworzenie przenośnych, niestandardowych ustawień edytora za pomocą polecenia EditorConfig).
Inne opcje formatowania
Pole wyszukiwania Szybkie uruchamianie zapewnia najszybszy sposób znajdowania ustawienia lub narzędzia. Znajduje się on w menu głównym. Po prostu zacznij wpisywać, a lista automatycznego uzupełniania przefiltruje wyniki.
Aby ustawić opcje formatowania, takie jak wcięcia, uzupełnianie nawiasów klamrowych i kolorowanie, wpisz "C++ Formatting" w oknie Szybkie uruchamianie .
Inne opcje formatowania można znaleźć w obszarze Edytuj>zaawansowane w menu głównym.
Opcje włączania i konfigurowania funkcji edycji specyficznych dla języka C++znajdują się w obszarze Narzędzia>Opcje>Edytor> tekstuC/C++. Po wybraniu opcji, którą chcesz ustawić, możesz uzyskać więcej pomocy, naciskając klawisz F1 , gdy okno dialogowe jest w trybie koncentracji uwagi. Aby uzyskać ogólne opcje formatowania kodu, wpisz Editor C++
ciąg w obszarze Szybkie uruchamianie.
Funkcje eksperymentalne, które mogą nie być uwzględnione w przyszłej wersji programu Visual Studio, znajdują się w oknie dialogowym eksperymentalnym edytora tekstów C++ . W programie Visual Studio 2017 lub nowszym można włączyć funkcję Predictive IntelliSense w tym oknie dialogowym.
Zobacz też
Odczytywanie i interpretowanie kodu
C++ Nawigowanie po bazie kodu C++ w programie Visual Studio
Współpraca z usługą Live Share dla języka C++
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla