Estilos Java en conflicto dentro de un equipo

12

Soy parte de un equipo de desarrollo de Java con un plazo de 6 semanas. Esto requiere escribir una gran cantidad de código muy rápidamente. Sin embargo, nuestro equipo de desarrollo tiene diferentes estilos de codificación. Todo, desde las convenciones de nombres hasta los métodos de abstracción, difieren entre nuestro equipo. ¿Alguien sabe de algún documento que dicte "estándares" para Java?

Para aclarar, me preguntaba si había una organización que dictara la convención de nomenclatura adecuada para variables y funciones, por ejemplo. Esto es primordial ya que con un plazo tan corto que no podemos permitirnos pasar tiempo tratando de comprender el código de los demás.

Daniel Gratzer
fuente

Respuestas:

18

Existe tal organización: Sun / Oracle mismo. El documento se llama Convenciones de código para el lenguaje de programación Java y describe la mayoría de las convenciones que necesita. Simplemente haga que todos acepten leerlo y sigan sus recomendaciones.

Andres F.
fuente
3
Este es un estándar bien conocido, pero no tengas miedo de desviarte de él donde el equipo esté de acuerdo. Estar restringido a 80 caracteres de ancho puede ser doloroso, por ejemplo.
Martijn Verburg
1
@MartijnVerburg el límite puede provocar la refactorización en métodos y clases para evitar una sangría profunda.
Esta es una convención, y podría ser una alternativa razonable, si no puede encontrar un acuerdo propio, pero como su nombre lo indica, no dicta: es una convención.
Usuario desconocido
@userunknown Tienes razón. Ni siquiera estoy de acuerdo con todas las convenciones. Pero es un buen compromiso dado el plazo del OP.
Andres F.
8

Realmente me estoy aferrando a la respuesta de Andrés y me estoy centrando en el aspecto que formatea de manera uniforme el código de Java.

Si está utilizando Eclipse, puede configurar su formateador Java para que se formatee automáticamente al estándar Java. El formateador de Eclipse también tiene otras configuraciones útiles, como los caracteres por línea (es decir, cuántos caracteres por línea antes de que se rompa en una nueva línea) y muchos otros. La estandarización de caracteres por línea hace que sea más fácil diferenciar el código escrito por diferentes desarrolladores sin tener muchas diferencias solo con el espaciado y los saltos de línea.

Finalmente, con Eclipse, después de haber establecido todas las configuraciones que desea, luego exporte su formateador como un archivo que pueda importar cada miembro del equipo. Entonces, si está utilizando Eclipse, le recomiendo explorar a fondo todas las opciones que formateará automáticamente y editará el código para usted, y luego compartirá la configuración con todo el equipo.

Supongo que los otros IDE principales de Java (IntelliJ y Netbeans) tienen una característica similar para exportar la configuración de formato.

Sam Goldberg
fuente
2
+1 ¡Buena respuesta también! También puede instalar un complemento como Checkstyle y que le avise cuando rompa las convenciones.
Andres F.
Nosotros también hacemos esto. Preferencias -> Java -> Editor -> Guardar opciones y habilitar el formato al guardar. La razón principal es asegurarse de que las líneas de origen afectadas por un formato sucedan lo antes posible para que el historial de control de versiones sea lo más limpio posible (diferencias de nuevo).
Sí, comencé a hacer esto recientemente también. Lo único de lo que no estoy seguro es que seleccioné "eliminar variables privadas no utilizadas" en la opción de guardar. Entonces, mientras estoy haciendo TDD, encuentro que con frecuencia, mis variables desaparecen porque el código se guardó antes de usarlas ... pero aparte de eso, esta opción ha sido excelente.
Sam Goldberg
6

Este [diferentes estilos de codificación] es primordial ya que con un plazo tan corto que no podemos permitirnos pasar tiempo tratando de comprender el código de los demás.

Realmente. No es primordial.

Después de 30 años como consultor, he leído mucho código de muchos clientes. Es importante tener en cuenta que cada cliente (y a menudo dentro de la organización de un cliente) tiene diferentes estilos.

Después de leer tantos estilos, he aprendido esto.

El estilo no importa

Céntrese en escribir código que siempre funcione y en escribir pruebas unitarias que demuestren que siempre funciona.

Una vez que haya enviado el código de trabajo, puede disfrazarlo si se ha quedado sin errores para arreglar y mejoras para instalar.

S.Lott
fuente
tal vez no importa, pero también es muy agradable de tener y muy fácil de hacer.
Kevin
1
El estilo no importa, pero la consistencia importa. El estilo inconsistente hace que el mantenimiento del software sea mucho más difícil.
Jesper
55
@Jesper: "El estilo inconsistente hace que el mantenimiento del software sea" un poquito "más difícil". No es mucho más difícil de ninguna manera. El código opaco, malo y con errores es mucho más difícil de mantener. Los estilos inconsistentes en el código de trabajo son solo estilos inconsistentes. Algunas personas tienen acento y hay que escuchar con más atención. Los estilos inconsistentes son poco más que un acento regional (o nacional) diferente.
S.Lott
1
El estilo no importa en un sentido global, pero el estilo consistente dentro de un solo equipo importa. No creará ni interrumpirá un proyecto, pero si es tan fácil ser coherente como no, ¿por qué no seguir adelante y ser coherente? Su código será al menos marginalmente mejor.
Bryan Oakley
1
"Tu código estará en" mejor "marginalmente mejor". Y sí, es casi cero costo y ciertamente cero riesgo. Pero. 100% de cobertura de prueba es mucho más valiosa que la consistencia.
S.Lott
2

No se preocupe por elegir un estándar universal perfecto. Todo lo que necesita es que su equipo acepte un estándar y se adhiera a él. Crea el tuyo si lo deseas, pero sé constante.

La consistencia mejora la colaboración, la colaboración mejora el código.

Incluso si la consistencia real no ayuda, el hecho de que su equipo haya trabajado juntos para llegar a un acuerdo es algo bueno. Su incapacidad para aceptar algo tan simple como las convenciones de codificación dice que puede haber mayores problemas de trabajo en equipo que acechan bajo la superficie.

Bryan Oakley
fuente
0

El Sun Java CC mencionado anteriormente no solo tiene 13 años y algunas de sus reglas están desactualizadas (como 80 caracteres por línea), sino que tampoco define las convenciones de nomenclatura, excepto las más generales (carcasa de camello para clases, mayúsculas de bloque) para variables finales estáticas y similares).

Debe definir sus propios estándares para diferentes tipos de clases, como DAO, EJB, entidades, lo que sea que use. Sun Java CC es como una clase base abstracta destinada a extender :)

MaDa
fuente
Estoy de acuerdo en que Java CC de Sun es un poco viejo, pero solo se entiende como un punto de partida. Supongo que el OP no tiene mucho tiempo para perder la definición de su propio CC, ¡o lo hubiera dicho! (Por cierto, donde actualmente trabajo usan un complemento Sonar configurado para imponer el límite de 80 caracteres, por lo que esta regla todavía está activa y activa en algunas tiendas).
Andres F.
Además de otras razones, la legibilidad es un factor. Tener que escanear una larga distancia a través de una línea es mucho menos eficiente que escanear hacia abajo. Con un código bien formateado, puede escanear rápidamente sobre código irrelevante.
BillThor
Si tienes problemas con 80 caracteres por línea, o tienes identificadores increíblemente largos o estás poniendo indescifrablemente mucho en líneas individuales. El primero es una tontería (¿no puede destilar la esencia a menos que eso?) Y el segundo es una indicación de una necesidad urgente de refactorización. El formateo automático al guardar es excelente, ya que ya no tendrá que preocuparse por el formateo; el software lo maneja por usted.
Donal Fellows
@DonalFellows Sí, hoy en día, el límite de 80 caracteres está ahí para recordarle que debe refactorizar, no por pequeñas pantallas de terminal.
Andres F.
0

Como mencionan otros aquí, puede buscar en línea una de las pocas 'guías de estilo' populares para Java y persuadir a todos en el equipo para que se adhieran a ellas. Algunas herramientas de verificación de código en su IDE favorito podrían ayudarlo a recordarle cuándo no lo está haciendo.

Sin embargo, a veces la política está involucrada. Una vez estuve en una situación anterior en la que el desarrollador más experimentado del equipo continúa haciéndolo a su manera, incluso después de que alguien mencionó la necesidad de estandarizar. En tal situación, tal vez sea mejor observar su estilo de código y seguirlo, ya que probablemente tenga el mayor conocimiento sobre la base y los requisitos del código y es posible que no desee perder el tiempo pisándole los pies a pesar de que es difícil. Que es lo que el resto de nosotros hicimos en esa situación particular y de mala gana lo sigo.

Por lo tanto, también es importante considerar su situación.

snowpolar
fuente
Que pais es este Suena como una cosa cultural.
@ ThorbjørnRavnAndersen Él quiere decir que las personas pueden ser resistentes al cambio cuando "lo que han estado haciendo durante tanto tiempo funciona". Política en este sentido es solo "política de oficina"
Robotnik
0

El tío Bob muestra un estilo de codificación más moderno y actual en su libro "Código limpio". Lamentablemente no contiene una lista de artículos. Lo tienes que leer. Él mismo dice que para ver sus convenciones, hay que leer su código. El tío Bob es sin duda una especie de institución. El libro es una lectura excelente de todos modos, así que incluso si es demasiado tarde para leerlo ahora, léalo lo antes posible.

Peter Kofler
fuente
0

Lo que realmente importa en el código es la baja complejidad ciclomática, el pequeño alcance, la alta cohesión y la elección de identificadores expresivos. Dados estos, el código se vuelve fácil de entender y dicho código es bueno.

Le sugiero que busque en Programación espartana .

La mayoría de los estándares de codificación le dicen cómo hacer que un código mal escrito se vea bonito y la mayoría de las discusiones sobre el "estilo de codificación" son en realidad sobre el formateo. El formato de código se trata de representar visualmente la estructura de su código. Es trivial y automatizable y apenas tiene que ver con el estilo de codificación, porque el estilo de codificación no se trata de cómo representa la estructura del código, sino de cómo estructura el código.
También hay muchas guerras religiosas sobre las convenciones de nombres, aunque en realidad son solo un truco para evitar un diseño deficiente. Un nombre es bueno, si dice lo que significa. Cuanto más pequeños y claros sean sus alcances, más fácil será elegir dicho nombre.

back2dos
fuente