2010-09-16 12 views
26

Estoy frente a una línea en particular de 153 caracteres de longitud. Ahora, tiendo a romper cosas después de 120 caracteres (por supuesto, esto depende en gran medida de dónde estoy y de las convenciones locales). Pero para ser sincero, cada vez que rompo la línea simplemente lo hace verse mal. Así que estoy buscando algunas ideas sobre lo que debería hacer para lograrlo.Envoltura de líneas de código: cómo manejar líneas largas

Aquí está la línea:

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper = new HashMap<Class<? extends Persistent>, PersistentHelper>(); 

Estoy abierto a ambas ideas sobre cómo/dónde romper la línea (y por qué), así como formas de acortar la propia línea.

No somos una tienda de Java, y no hay convenciones locales para este tipo de cosas, o obviamente simplemente las seguiría.

Gracias!

Respuesta

32

En general, me rompen las líneas antes operadores, y guión de las líneas siguientes:

Map<long parameterization> 
    = new HashMap<ditto>(); 

String longString = "some long text" 
        + " some more long text"; 

Para mí, el principal operador transmite claramente que "esta línea se continúa de otra cosa, no se sostiene por sí mismo ". Otras personas, por supuesto, tienen diferentes preferencias.

+1

Y como un comentario relacionado: ¿no sería bueno si Java tuviera typedef? – Anon

+1

Sí, sí, lo haría. Incluso me conformaría con & macros – corsiKa

+4

Estoy de acuerdo con el descanso antes de los operadores, excepto con el operador de asignación, me resulta más difícil de leer cuando su '=' está en la segunda línea. Y pronto Java tendrá el operador Diamante :) –

6

mi humilde opinión, esta es la mejor manera de escribir la línea:

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper = 
     new HashMap<Class<? extends Persistent>, PersistentHelper>(); 

De esta manera el aumento de la hendidura sin tirantes puede ayudar a ver que el código se acaba splited porque la cola era demasiado tiempo. Y en lugar de 4 espacios, 8 lo hará más claro.

+0

Una línea puede comenzar con un operador pero nunca debe terminar con ella, en este caso '='. Verifique el formateo automático en su IDE. NetBeans cambiaría este código seguro (probado). – Hermes

+4

Los ajustes predeterminados de un IDE no son relevantes para las preferencias personales o las recomendaciones de un desarrollador. Entiendo que algunas personas preferirían usar el '=' al principio de la línea, pero en el caso de la declaración de atributos de clase (o atributos en general para el caso) considero que el código ya es lo suficientemente claro (la sangría de la segunda línea debería hacerlo aún más claro). –

+2

Para que quede claro, no existe el bien y el mal aquí, es puramente estético y opiniones personales. –

4

Usa los métodos de fábrica estáticos de Guava para Maps y tiene solo 105 caracteres.

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper = Maps.newHashMap(); 
+3

+1 Muy buena idea. Si no desea la dependencia adicional, es muy fácil escribir una fábrica estática por su cuenta. – helpermethod

+41

No creo que usar una biblioteca para obtener líneas más cortas sea una buena idea. – Carlos

+1

No recomendaría incluirlo para ese propósito, pero muchos proyectos ya lo usan. Y como señaló el Método Helper, es un trazador de líneas único que ahorra algunas pulsaciones de tecla. – whiskeysierra

6

Así es como lo hago, y Google lo hace a mi manera.

  • rotura antes el símbolo de no afectación operadores.
  • Descanso después de el símbolo para = y para ,.

En su caso, ya que está utilizando 120 caracteres, se puede romper después de que el operador de asignación que resulta en

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper = 
     new HashMap<Class<? extends Persistent>, PersistentHelper>(); 

En Java, y para este caso particular, le daría dos pestañas (u ocho espacios) después del descanso, dependiendo de si se usan pestañas o espacios para la sangría.

Esto es por supuesto una preferencia personal y si su proyecto tiene su propia convención para el ajuste de línea, entonces eso es lo que debe seguir, le guste o no.

0

Creo que mover al último operador al comienzo de la siguiente línea es una buena práctica. De esta forma sabrá de inmediato el propósito de la segunda línea, incluso si no comienza con un operador. También recomiendo 2 espacios de indentación (2 pestañas) para una pestaña previamente rota, para diferenciarla de la indentación normal.Eso es inmediatamente visible como continuación de la línea anterior. Por lo tanto sugiero esto:

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper 
      = new HashMap<Class<? extends Persistent>, PersistentHelper>(); 
Cuestiones relacionadas