Conectar los frenos
Un juego para ayudar a visualizar los efectos del estilo de colocación de aparatos ortopédicos en Java
El objetivo es ser objetivo
Hace varios años, se me ocurrió un enfoque creativo para ayudar a establecer y acordar un estilo de codificación con un nuevo equipo en el que estaba trabajando. Estábamos en las etapas iniciales de la codificación de un nuevo proyecto utilizando el lenguaje de programación Java. Solicité que decidiéramos y acordáramos pautas de estilo de código consistentes como equipo, por adelantado. Sabía que necesitaba presentar un argumento objetivo y creativo para abordar uno de los debates polémicos sobre el estilo de código en Java: dónde colocar las llaves.
Elegir la creatividad sobre el conflicto
Nadar contra la corriente de "pero todos los demás lo hacen de esta manera" es difícil. Es aún más difícil cuando una empresa de búsqueda muy respetada estampa su sello de aprobación en un estilo de codificación de Java en particular.
Para ayudarme a presentar un argumento objetivo para un estilo particular de colocación de aparatos ortopédicos, creé un juego que llamé "Conectar los aparatos ortopédicos". Tomé el código de dos clases de ejemplo que creé y las pegué en una plataforma de Powerpoint y, literalmente, dibujé líneas encima del código para conectar las llaves de inicio y finalización. El juego se inspiró en uno de mis juegos favoritos de la infancia: "Conectar los puntos".
Lo mejor de "Conectar los puntos" es que las reglas son simples y casi todos han jugado el juego en la escuela. "Conectar los frenos" también es muy simple. Simplemente conecte las llaves inicial y final de cada ámbito de código dibujando una línea entre ellas. Fácil.
Presenté el juego al equipo y, una vez que terminé, nadie respondió "pero todos los demás lo hacen de esta manera". Esto confirmó que al menos un equipo respondió bien a un argumento creativo sobre el estilo de colocación de los aparatos ortopédicos.
Automatizando el juego
Le conté a mi amigo Vladimir Zakharov (Vlad) sobre este juego y cómo desactivó de manera efectiva lo que había experimentado previamente como un debate incendiario. Le pregunté a Vlad si podía escribir código Java para visualizar el juego que le describí. Vlad es mejor en programación visual que yo, así que sabía que completaría el código más rápido que yo.
Vlad hizo algo incluso mejor que simplemente conectar las llaves en un archivo fuente. También coloreó bloques de código con resaltado verde. Esto tiene el beneficio adicional de resaltar visualmente los espacios en blanco.
Las imágenes de la siguiente sección se generaron utilizando la versión automatizada de Vlad de "Connect the Braces" en el código real de Eclipse Collections Kata .
¡Advertencia! ¡Juego encendido!
Las siguientes imágenes son gráficas. Algunos desarrolladores pueden encontrarlos perturbadores. El código fuente real se utilizó en la creación de las siguientes imágenes. Cualquier imagen que no se pueda ver después de desplazarse más allá de este texto es responsabilidad exclusiva de la persona que se desplaza, no del autor. Cualquier fruta o mascota que haya resultado dañada durante las dos rondas de "Conectar los frenos" fue el resultado de las opciones de estilo del código, no del autor. Elegir sabiamente. ¡Usted ha sido advertido!
Primera ronda: enumeración de frutas
Segunda ronda: enumeración de tipo de mascota
Elegir la claridad sobre el desorden
Sé que probablemente me metí en un río embravecido lleno de pirañas hambrientas mientras vestía un traje de baño hecho con bistec. No busco convencer a todos de que un estilo particular de colocación de aparatos ortopédicos es el "único estilo verdadero". Definitivamente hay un estilo que prefiero cuando escribo código, y tengo que defenderlo en cada proyecto en el que trabajo. Encuentro que cuando presento mi argumento usando este juego, podemos tener una discusión saludable sobre la importancia de la estética, el espacio en blanco y el seguimiento visual para el escaneo y la legibilidad del código.
Elijo la claridad sobre el desorden. Señal sobre ruido. Elijo el estilo de la derecha.
Para citar a mi amigo Vlad:
Cuando leo el código, generalmente quiero ver el "qué", por ejemplo, cuáles son las responsabilidades de esta clase, cuál es el contrato de este método, cuál es la condición para activar esta rama, o el "cómo", por ejemplo, cómo hace este método lo que hace, qué sucede si sigo esta rama, etc. Tener los qué y los cómo segregados visualmente me ayuda a escanear el código y centrar mi atención en lo que importa en ese momento.
The vertical brace formatting style has a natural effect of cleanly separating the “what” from the “how” by introducing whitespace between signature (class and method definitions) and implementation (variables and code). The beginning and end braces are always in the same horizontal location, with variability based consistently on the depth of nested scopes (e.g. control statements like if, for and while). You expect to see the base of a pyramid shape with the braces, so can safely ignore where they are, because you know where they are. This style is easy to implement automatic formatting in your IDE and and enforce in a CheckStyle build.
He estado nadando contra la corriente utilizando este estilo de formato de llaves en Java durante más de 20 años. Para los desarrolladores que tienen que leer o trabajar en las bases de código que están formateadas usando el estilo de colocación de llaves verticales por mi culpa, tengo algo que decir.
¡De nada!
Una excepción a la regla
Elijo un estilo de colocación de llaves diferente cuando creo diapositivas de PowerPoint o texto para un libro con código Java. Solo en estos dos medios impresos, casi siempre elijo el estilo que favorece menos líneas de código. Romper el código entre páginas no es deseable. Esta es una compensación que se realiza debido a los límites en el espacio vertical disponible. Este límite impuesto no existe en el código que está leyendo en su IDE o en una fuente de lectura del navegador desde un VCS como GitHub o GitLab, donde el desplazamiento vertical funciona bien.
Siete hábitos de codificación ineficaces de muchos programadores
Unos meses después de crear el juego "Conectar los frenos", me encontré con una charla increíble de Kevlin Henney, quien presenta un gran argumento para un estilo particular de colocación de aparatos ortopédicos, entre muchos otros puntos excelentes que presenta en la charla sobre el estilo de codificación.
Entonces, por lo tanto, lo que te acabo de decir, en caso de que te lo estés preguntando, sí, hay una manera de determinar la forma correcta de alinear tus brackets… de manera objetiva.
Sin aguafiestas. Recomiendo encarecidamente ver esta charla. Advertencia, esta charla puede ser una interrupción constructiva de su estilo de codificación actual.
Una llamada a la acción sobre el estilo de código Java
Estamos dejando miles de millones de líneas de código fuente de Java en los sistemas de control de versiones para que las mantengan nosotros mismos y las futuras generaciones de desarrolladores. El estilo del código tiene un impacto directo y sutil en la claridad y legibilidad. No todo el mundo lee el código a la misma velocidad. Puede haber desafíos de accesibilidad que deba discutir y considerar como equipo. Todos deberían poder analizar el código eventualmente leyéndolo, independientemente del estilo del código. Si podemos pasar menos ciclos separando el qué del cómo y encontrando el código que estamos buscando, sería algo bueno.
Aquí están mis reglas para construir un estilo de codificación aceptable en un equipo.
- Tenga conversaciones con su equipo sobre las pautas de estilo de código.
- Aplique pautas de estilo de código consistentes en su proyecto utilizando reglas de formato automático codificadas y personalizadas en su IDE favorito.
- Ejecute una compilación continua automatizada que interrumpirá las confirmaciones de estilo de código inconsistentes (por ejemplo, CheckStyle).
- Publique sus pautas de estilo de código en su proyecto VCS.
- Tenga el coraje y tómese el tiempo para desarrollar sus pautas de estilo de código cuando descubra o aprenda algo nuevo.
Siéntase libre de usar el juego Connect the Braces para ayudar a facilitar discusiones racionales y objetivas sobre el estilo del código, especialmente en lo que se refiere a las discusiones sobre el estilo de colocación de llaves en Java. Si le gusta este estilo y desea ver la configuración de estilo de código que hemos utilizado en IntelliJ IDEA para Eclipse Collections durante los últimos siete años, se registran en GitHub aquí .
¡Disfrutar!
Soy el creador y responsable del proyecto Eclipse Collections OSS que se gestiona en la Fundación Eclipse . Eclipse Collections está abierto a contribuciones .

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































