Editar y refactorizar código de C++ en Visual Studio
Visual Studio proporciona varias herramientas que sirven para escribir, editar y refactorizar código.
IntelliSense
IntelliSense es una herramienta de finalización de código muy eficaz que sugiere símbolos y fragmentos de código automáticamente a medida que va escribiendo. C++ IntelliSense en Visual Studio se ejecuta en tiempo real y, al actualizar el código base, lo analiza y realiza recomendaciones. A medida que se escriben más caracteres, la lista de resultados recomendados se va acotando.
Algunos símbolos se omiten automáticamente para ayudar a acotar los resultados. Por ejemplo, al acceder a los miembros de un objeto de clase desde fuera de esta, no podrá ver los miembros privados de forma predeterminada, ni los miembros protegidos (si no está en el contexto de una clase secundaria). El filtrado se puede ajustar con los botones de la parte inferior.
Tras elegir el símbolo de la lista desplegable, se puede autocompletar con las teclas Tabulación o Entrar, o con cualquiera de los otros caracteres de confirmación, que de forma predeterminada son { } [ ] ( ) . , : ; + - * / % & | ^ ! = ? @ # \
. Para agregar o quitar caracteres de esta lista, busque "IntelliSense" en Inicio rápido (Ctrl+Q) y elija la opción Editor de texto > C/C++ > Avanzado. La opción Caracteres de confirmación de las listas de miembros permite personalizar la lista con los cambios que quiera.
La opción Modo de filtro de la lista de miembros controla qué tipos de sugerencias de Autocompletar de IntelliSense van a aparecer. Esta opción está establecida de manera predeterminada en Aproximada. En una búsqueda aproximada, si tiene un símbolo llamado MyAwesomeClass, puede escribir "MAC" y buscar la clase entre las sugerencias de Autocompletar. El algoritmo aproximado establece un umbral mínimo que los símbolos deben cumplir para figurar en la lista. El filtrado Inteligente muestra todos los símbolos que contienen las subcadenas que coinciden con lo que ha escrito. El filtrado Prefijo busca cadenas que comiencen por lo que ha escrito.
Para obtener más información sobre C++ IntelliSense, vea IntelliSense de Visual C++ y Configurar un proyecto de C++ para IntelliSense.
IntelliCode
IntelliCode es IntelliSense asistido por inteligencia artificial. Coloca al candidato más probable al principio de la lista de finalización. Las recomendaciones de IntelliCode se basan en miles de proyectos de código abierto de GitHub, cada uno con más de 100 estrellas. Cuando se combina en el contexto del código, la lista de finalización se adapta para promover prácticas habituales.
Al escribir C++, IntelliCode será de ayuda al usar bibliotecas muy conocidas, como la biblioteca estándar de C++. El contexto del código se usa para realizar las recomendaciones más útiles en primer lugar. En el siguiente ejemplo, la función miembro size
se suele usar con la función sort
, por lo que aparece al principio de la lista de resultados.
En Visual Studio 2022 y Visual Studio 2019, IntelliCode está disponible como componente opcional en la carga de trabajo Desarrollo para el escritorio con C++ . Para asegurarse de que IntelliCode está activo para C++, vaya a Herramientas>Opciones>IntelliCode>General y establezca Modelo base de C++ en Habilitado.
En Visual Studio 2017, IntelliCode está disponible como una extensión en Visual Studio Marketplace.
IntelliSense predictivo (experimental)
IntelliSense predictivo es una característica experimental que usa el reconocimiento contextual para limitar el número de resultados que aparecen en la lista desplegable de IntelliSense. El algoritmo hace uso de la coincidencia de tipos para mostrar únicamente aquellos resultados que coincidan con el tipo esperado. Siguiendo un ejemplo muy básico, si escribe int x =
e invoca la lista desplegable de IntelliSense, solo verá números enteros o funciones que devuelven enteros. Esta característica está desactivada de forma predeterminada porque aún está en fase de desarrollo. Funciona mejor con símbolos globales; todavía no se admiten funciones miembro. Para activarla, escriba "Predictivo" en Inicio rápido o vaya a Herramientas>Opciones>Editor de texto>C/C++>Experimental>Habilitar IntelliSense predictivo.
Para invalidar IntelliSense predictivo y mostrar una lista más larga, presione Ctrl+J. Si IntelliSense predictivo está activado, cuando se invoque Ctrl+J se quitará el filtro predictivo. Si se presiona Ctrl+J otra vez, se quita el filtro de accesibilidad de los resultados de la lista de miembros (cuando proceda). El botón ([+]) situado debajo de la lista desplegable de IntelliSense hace lo mismo que Ctrl+J. Mantenga el puntero sobre este botón para ver una información sobre herramientas sobre qué se está mostrando.
La captura de pantalla anterior muestra varios botones debajo de la lista desplegable. Con ellos, se habilitan los filtros de IntelliSense para obtener distintos tipos de resultados:
- Variables y constantes
- Funciones
- Tipos
- Macros
- Enumeraciones
- Espacios de nombres
Un botón aparece solo si es relevante en la sesión actual de IntelliSense. Normalmente, no se ven todos los botones al mismo tiempo.
IntelliSense para plantilla
La barra de plantillas es un elemento de interfaz de usuario que aparece cuando el cursor se encuentra sobre una definición de plantilla. Resulta útil porque puede proporcionar argumentos de plantilla de ejemplo para IntelliSense que aparecerán al editar el cuerpo de la plantilla. Por ejemplo, puede especificar que un argumento de plantilla sea de tipo std::vector<int>
. Después, cuando use ese argumento en el cuerpo de la plantilla, verá los miembros de std::vector<int>
en IntelliSense.
Haga clic en el icono <T> para expandir o contraer la barra de plantillas. Haga clic en el icono de lápiz o haga doble clic en la Barra de plantillas para abrir la ventana Editar donde se especifican los tipos de argumento para los parámetros.
La Barra de plantillas puede rellenar automáticamente los tipos de parámetros en función de las instancias de la plantilla en el código. Haga clic en Agregar todas las creaciones de instancias existentes para ver una lista de todos los argumentos concretos que se han usado para crear instancias de la plantilla a lo largo del código base.
Una ventana en la parte inferior del editor señala dónde se ha detectado cada creación de instancias y cuáles han sido sus argumentos. Puede seleccionar una creación de instancias para ir a la ubicación en el código donde se encontró esa creación de instancias.
La información de la Barra de plantillas es específica del usuario. Se almacena en la carpeta .vs
y no se confirma en el control de código fuente.
Subrayados ondulados de error y soluciones rápidas
Si el editor detecta problemas con el código, agregará subrayados ondulados de color debajo del problema. Un subrayado ondulado de color rojo señala código que no se va a compilar. El subrayado ondulado de color verde señala otros tipos de problemas, que pueden llegar a ser graves. Puede abrir la ventana Lista de errores para obtener más información sobre los problemas.
En algunos tipos de errores, y en patrones de programación comunes, el editor ofrecerá una corrección rápida en forma de bombilla, que aparece cuando se mantiene el puntero sobre el subrayado ondulado. Haga clic en la flecha abajo para ver las sugerencias.
En el siguiente ejemplo, hay un elemento vector
declarado, pero no se encontró ninguna definición, por lo que el editor sugiere incluir el archivo de encabezado necesario:
El editor también ofrece soluciones rápidas en algunas oportunidades de refactorización. Por ejemplo, si declara una clase en un archivo de encabezado, Visual Studio propondrá crear una definición para ella en un archivo .cpp aparte.
Seguimiento de cambios
Cada vez que haga un cambio en un archivo, aparecerá una barra amarilla a la izquierda que informa de que se han realizado cambios sin guardar. Cuando guarde el archivo, la barra cambiará a color verde. Las barras verde y amarilla siguen apareciendo mientras el documento esté abierto en el editor. Señalan los cambios realizados desde que el documento se abrió por última vez.
Mover código
Las líneas de código se pueden subir y bajar; para ello, solo tiene que seleccionarlas manteniendo la tecla Alt presionada y presionar las teclas de dirección arriba/abajo.
Insertar fragmentos de código
Un fragmento de código es una parte de código fuente predefinida. Haga clic con el botón derecho en un único punto o en el texto seleccionado y seleccione Fragmento de código para insertar un fragmento de código o rodear el texto seleccionado con el fragmento de código. La siguiente ilustración muestra los tres pasos necesarios para envolver una instrucción seleccionada con un bucle for. Las partes resaltadas en amarillo de la imagen final son campos que se pueden editar y a los que puede acceder con la tecla TAB. Para obtener más información, vea Fragmentos de código.
Una función está seleccionada. En la lista desplegable que aparece después de hacer clic con el botón derecho en el nombre de la función, Rodear con... está resaltado en amarillo. En la lista desplegable Rodear con..., se selecciona el fragmento de código de un bucle "for". Esto da como resultado la colocación de un bucle for alrededor de la función. La variable de bucle y el límite se muestran en amarillo para indicar que son campos editables.
Agregar clase
Agregue una nueva clase desde el menú Proyecto o desde el menú contextual del Explorador de soluciones:
También puede usar el Asistente para clases para modificar o examinar una clase existente.
Para obtener más información, vea Agregar funcionalidad con los asistentes para código (C++).
Refactorización
Las refactorizaciones están disponibles bajo el menú contextual Acción rápida, o bien haciendo clic en una bombilla en el editor. Algunas se encuentran en el menú Editar > Refactorizar. Entre ellas se incluyen:
- Cambiar nombre
- Extraer función
- Implementar virtuales puras
- Crear declaración o definición
- Mover definición de función
- Convertir en literal de cadena sin formato
- Cambiar firma
Aplicación de estilo de código con ClangFormat y EditorConfig
Visual Studio 2017 y las versiones posteriores incluyen compatibilidad integrada con ClangFormat, una conocida utilidad de formato de código para C++ basada en Clang/LLVM. Escriba "ClangFormat" en Inicio rápido para configurarla para que use uno de estos formatos comunes:
- LLVM
- Chromium
- Mozilla
- WebKit
- Programa para la mejora
También puede proporcionar su propio archivo .clang-format
o _clang-format
para aplicar reglas personalizadas a todos los archivos de código del mismo nivel o por debajo.
Estos archivos se pueden compartir fácilmente a través del control de código fuente, lo que permite que todo el equipo de desarrollo use las mismas convenciones de código.
Visual Studio 2017 y las versiones posteriores también admiten EditorConfig, que funciona de forma similar, si bien ClangFormat tiene más opciones de estilo que EditorConfig, incluido reglas que son específicas de C++. Con EditorConfig se crean archivos .editorconfig y se ponen en diferentes carpetas del código base para especificar estilos de código aplicables a esas carpetas y sus subcarpetas. Un archivo .editorconfig sustituye cualquier otro archivo .editorconfig que haya en las carpetas principales, y sobrescribe cualquier configuración de formato que se haya establecido a través de Herramientas>Opciones. Se pueden establecer reglas de tabulaciones frente a espacios o tamaños de sangría, entre otras muchas cosas. Para obtener más información, vea Crear opciones de configuración del editor personalizadas y portátiles con EditorConfig.
Otras opciones de formato
El cuadro de búsqueda Inicio rápido constituye la forma más rápida de encontrar una configuración o una herramienta. Se encuentra en el menú principal. Solo tiene que empezar a escribir y la lista de autocompletar filtrará los resultados.
Para establecer opciones de formato, como sangrías, finalización de llave y uso de colores, escriba "Formato de C++" en la ventana Inicio rápido.
Encontrará otras opciones de formato en Editar>Avanzado en el menú principal.
Las opciones para habilitar y configurar características de edición específicas de C++ se encuentran en Herramientas>Opciones>Editor de texto>C/C++ . Después de elegir la opción que quiere establecer, puede obtener más ayuda si presiona F1 cuando el cuadro de diálogo tenga el foco. Para acceder a las opciones de formato de código generales, escriba Editor C++
en Inicio rápido.
Las características experimentales, que se podrían incluir o no en una versión futura de Visual Studio, se encuentran en el cuadro de diálogo Editor de texto C++ Experimental. En Visual Studio 2017 y versiones posteriores, IntelliSense predictivo se puede habilitar en este cuadro de diálogo.
Vea también
Lectura y descripción del código de C++
Navegación en el código base de C++ en Visual Studio
Colaboración con Live Share para C++