JavaRush /Blog Java /Random-ES /IntelliJ IDEA: estilo y formato de código
Viacheslav
Nivel 3

IntelliJ IDEA: estilo y formato de código

Publicado en el grupo Random-ES
Las herramientas modernas facilitan el proceso de desarrollo. En particular, es más fácil controlar el estilo de su código, tratando de minimizar su formato "no autorizado". En esta revisión, propongo familiarizarse con las herramientas que IntelliJ Idea IDE proporciona al desarrollador para que el código sea agradable de leer y fácil de entender.
IntelliJ IDEA: estilo de código y formato - 1

Introducción

Un lenguaje de programación es muy similar al lenguaje que habla la gente. La única diferencia es que este es un lenguaje especial que se utiliza inicialmente para comunicarse con una computadora para explicarle lo que queremos de ella. Pero no puede haber comunicación uno a uno con una computadora. Incluso cuando empezaste a aprender un lenguaje de programación, consultaste un libro o algún recurso educativo como JavaRush. Y en esta fuente viste un código que una computadora entenderá. Pero también debes entenderlo a medida que adquieras conocimientos del lenguaje Java. Como en cualquier lenguaje, la programación tiene algunas reglas para formar código. Por ejemplo, escribir con una valla en una sociedad educada se considera de mala educación, y en Java llamar a un método con una letra mayúscula es una grave violación del estilo del código. Las reglas para formatear el código Java están formuladas en el documento Convención de código Java . Además, el estilo del código puede regular detalles más pequeños, como la sangría. Y cuando se utilizan herramientas de control de versiones, imagine toda la pesadilla cuando todos guardan un archivo con sangría como pestaña o con sangría como espacio. ¿Cómo será para alguien que necesita verificar la edición con un solo método, pero se cambiará todo el archivo debido a la corrección de espacios en tabulaciones o viceversa? Naturalmente, como ocurre con el lenguaje corriente, el estilo puede variar según dónde se utilice. Por ejemplo, en Internet puedes encontrar la Guía de estilo Java de Google o la Guía de estilo Java de Twitter . Para este artículo de revisión, necesitaremos un sujeto de prueba. Utilicemos el servicio del sistema de compilación de proyectos Gradle. Nos permitirá crear un nuevo proyecto usando una plantilla para un inicio rápido. Gradle tiene un gran complemento: Build Init Plugin . Vayamos al nuevo directorio y ejecutemos el comando allí: gradle init --type java-application Después de eso, inicie IntelliJ Idea. Si ve una ventana con un proyecto ya abierto (verá el editor de código, el árbol de estructura del proyecto), cierre este proyecto usando File -< Close Project. Ahora en la ventana de bienvenida ejecutaremos "Import Project"e importaremos nuestro nuevo proyecto. Al importar, configure la bandera "Use autoimport". Averigüemos si es posible simplificar de alguna manera la vida con la ayuda de herramientas de desarrollo modernas.

Formatear código en Idea

Después de importar el proyecto, presione la combinación de teclas Ctrl+Ny vaya a la clase AppTest. Esta clase es la clase de prueba predeterminada. Se parece a esto:
import org.junit.Test;
import static org.junit.Assert.*;

public class AppTest {
    @Test public void testAppHasAGreeting() {
        App classUnderTest = new App();
        assertNotNull("app should have a greeting", classUnderTest.getGreeting());
    }
}
¿Qué te llama inmediatamente la atención aquí? Una anotación con una declaración de método en una línea, que se ve fea, de acuerdo. ¿Cómo arreglar esto? IntelliJ Idea tiene una sección de menú "Code"para diversas manipulaciones de código. Una de esas manipulaciones es "Reformat Code"una combinación de teclas Ctrl + L. Después de la aplicación, la anotación estará en una línea y el método en sí estará en otra. Vale la pena señalar de inmediato que esta operación se realiza en una sección de código seleccionada . Y si no existe tal cosa, la operación de formateo se realizará en todo el contenido. Ahora agreguemos un nuevo método de prueba:
@Test
public void testSummOfOddNumbers() {
	List<Integer> data = Arrays.asList(1, 4, 2, 3, 6, 7, 9);
	Integer result = data.stream().filter(number -> number % 2 == 0).reduce((n1, n2) -> n1 + n2).get();
	assertThat(result, is(12));
}
Y dos importaciones:
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
Como puede ver, la operación en Stream se coloca en una línea. Pero ¿qué pasa si queremos asegurarnos de que los métodos cuyas llamadas están encadenadas siempre se divida en un punto en nuevas líneas? Por un lado, podemos hacerlo manualmente. Pero recuerda que queremos que todo funcione para nosotros. Después de todo, de vez en cuando lo olvidaremos y el formato del código será diferente en todas partes, lo cual no es bueno. Resulta que necesitas editar la regla mediante la cual Idea realiza el formateo. Seleccione el elemento Idea en el menú File -> Settings(o haga clic en Ctrl + Alt + S). En el campo de búsqueda de la ventana de configuración, escriba "Estilo de código". En la sección Estilo de código es posible especificar configuraciones no solo para Java. Pero ahora estamos interesados ​​en Java. Como puede ver, la configuración se divide en varias pestañas. Lo más útil es que el resultado del cambio se mostrará en un ejemplo en el lado derecho de la ventana:
IntelliJ IDEA: estilo de código y formato - 2
Como puede ver en la captura de pantalla, podemos especificar la configuración para "Llamadas a métodos encadenados" como "ajustar siempre", es decir. siempre dividido para llamadas a métodos combinados. ¡Ahora presionemos formatear nuevamente en la prueba y veamos que realmente funciona! Pero a veces sucede que es necesario formatear algún código fuera de las reglas generales de formato. Configuremos el formato de la siguiente manera:
IntelliJ IDEA: estilo de código y formato - 3
Para habilitar la desactivación del formato, se debe habilitar la compatibilidad con marcadores de desactivación de formato en la sección Estilo de código:
IntelliJ IDEA: estilo y formato del código - 4
Ahora podemos cambiar el código de nuestra prueba para que su formato permanezca en la forma en que lo escribimos:
@Test
public void testSummOfOddNumbers() {
	List<Integer> data = Arrays.asList(1, 4, 2, 3, 6, 7, 9);
	// @formatter:off
	Integer result = data.stream().filter(number -> number % 2 == 0)
                             .reduce((n1, n2) -> n1 + n2)
                             .get();
	assertThat(result, is(12));
	// @formatter:on
}
Sí, si lo notas: cuando presionas Tabulador, Idea lo interpreta como espacios (comportamiento predeterminado). Pero puedes cambiar esto allí en Estilo de código:
IntelliJ IDEA: estilo de código y formato - 5
Como puede ver, existe una gran variedad de configuraciones. Puede leer más sobre la configuración de estilo de código aquí: " Ayuda de idea: estilo de código ". Hay otra característica de formato importante: el formato de importación. Se ejecuta por separado y se llama "Optimize Imports"y se ubica en el elemento del menú Code -> Optimize Imports(Ctrl + Alt + O). La optimización de las importaciones elimina las importaciones innecesarias y también las coloca en el orden correcto de acuerdo con la configuración en la pestaña Importaciones de la configuración de Estilo de código para Java. Además, si deseas que el formateo se realice automáticamente, la buena noticia es que puedes hacerlo usando el complemento Guardar acciones .

Distribuir configuraciones a un equipo

Genial, vimos arriba que podemos personalizar el estilo de formato según nuestras necesidades. Pero, ¿cómo se puede utilizar este estilo en un equipo? Muy simple. Hay varias opciones. La más sencilla es guardar el diagrama. Abra la configuración de Idea a través de Archivo -> Configuración (o presione Ctrl + Alt + S). En la sección Estilo de código podemos ver la inscripción Esquema. Este es nuestro esquema de formato. De forma predeterminada, se especifica un esquema con el nombre Predeterminado y al lado está la anotación IDE: esto significa que esta configuración es solo para nuestro IDE y no afecta a nadie. Para hacer un esquema “personalizado”, haga clic en el botón de la derecha para hacer un “duplicado” y asígnele un nombre, por ejemplo: JavaRush
IntelliJ IDEA: estilo y formato del código - 6
Luego de esto ya podremos importar o exportar la configuración:
IntelliJ IDEA: estilo y formato del código - 7
Otra opción es importar la configuración de Idea:
IntelliJ IDEA: estilo de código y formato - 8
La tercera opción es el Repositorio de configuraciones. Para obtener más información sobre el uso del Repositorio de configuración, consulte la documentación "Ayuda de IntelliJ Idea: Repositorio de configuración ". Sobre el tema de la distribución de un solo estilo en el equipo, tampoco puedo dejar de notar el buen soporte para estilos del IDE de Eclipse. Para hacer esto, necesitará instalar un complemento por separado: abra la configuración de Idea a través de Archivo -> Configuración (Ctrl + Alt + S) y vaya a la sección Complementos. Para buscar nuevos complementos, haga clic en el botón "Browse Repositories", después de lo cual encontraremos el complemento Eclipse Code Formatter en la ventana de búsqueda.
IntelliJ IDEA: estilo y formato del código - 9
Ahora, después de la instalación, debe reiniciar Idea; este es un procedimiento estándar. Después de eso, en el mismo lugar, en la configuración de Idea, encontraremos una nueva sección: “Eclipse Code Formatter”. Puede encontrar un ejemplo de un archivo de formato para Eclipse aquí . Se verá algo como esto:
IntelliJ IDEA: estilo de código y formato - 10

Requisitos de ajuste

Además de las herramientas de Idea, también puede utilizar complementos del sistema de compilación para ajustar los requisitos. No hay forma de comprobar que una persona utilizó el formato. Si hay 5 personas en el equipo, aún es posible. Si la empresa tiene 100 personas, no es realista. Sí, incluso cinco serán difíciles de seguir. ¿Y por qué perder el tiempo en esto? Es mucho más fácil prohibir la recopilación de un proyecto si se violan ciertas reglas. De hecho, este es un tema completamente separado llamado "Inspeccionar código". A los efectos de este artículo, sólo quiero mostrar cómo funciona. Uno de los complementos más comunes para Gradle (ya que recopila nuestro proyecto, si lo recuerdas) es pmd . Para habilitarlo, simplemente vaya al script de compilación de nuestro proyecto gradle (el archivo build.gradle en la raíz de nuestro proyecto) y especifique pmd junto al resto de los complementos:

plugins {
    // Apply the java plugin to add support for Java
    id 'java'
    // Check source code
    id 'pmd'
    // Apply the application plugin to add support for building an application
    id 'application'
}
Ahora podemos establecer configuraciones más detalladas allí:

pmd {
    ignoreFailures = false
    pmdTest.enabled = true
    ruleSets = [
            'java-basic',
            'java-braces',
            'java-clone',
            'java-codesize',
            'java-comments',
            'java-controversial',
            'java-coupling',
            'java-design',
            'java-empty',
            'java-finalizers',
            'java-imports',
            'java-optimizations',
            'java-strictexception',
            'java-strings',
            'java-typeresolution',
            'java-unnecessary',
            'java-unusedcode'
    ]
}
Incluso en nuestro proyecto ya no todo va bien. Ejecutemos gradle build y obtendremos un error. Lo bueno es que se genera un informe durante el montaje. Y si hay errores, recibiremos un mensaje como:

BUILD FAILED in 35s
6 actionable tasks: 6 executed
7 PMD rule violations were found. See the report at: file:///C:/_study/codestyle/build/reports/pmd/main.html
Si vamos al informe, veremos algo como:
IntelliJ IDEA: estilo y formato del código - 11
Además, en la columna Problema hay un enlace a una descripción del problema en el sitio web del complemento pmd. Por ejemplo, para el error "headerCommentRequirement Required", el enlace va aquí: pmd - CommentRequired . Este error nos indica que nuestra clase no tiene un JavaDoc. La presencia de JavaDoc sobre las clases se puede configurar mediante plantillas:
IntelliJ IDEA: estilo de código y formato - 12
Y especifique el contenido del encabezado del archivo:
IntelliJ IDEA: estilo de código y formato - 13
Después de esto, podemos convertir el comentario sobre la clase App en un JavaDoc y ver con una nueva compilación que el error ha desaparecido.

Línea de fondo

El estilo del código es importante para un proyecto productivo. Un código bonito escrito según reglas generales es la garantía de que tus compañeros lo entenderán más fácil y rápidamente, y no dirán un par de cosas cariñosas sobre ti. Con las modernas herramientas de desarrollo, cumplir las reglas no es tan difícil. Espero que esta revisión haya demostrado que este es realmente el caso. Bueno, como siempre, un poco de material sobre el tema: #viacheslav
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION