Envoltura de líneas de código - cómo manejar líneas largas


Estoy frente a una línea en particular que tiene 153 caracteres de largo. Ahora, tiendo a romper las cosas después de 120 caracteres (por supuesto, esto depende en gran medida de dónde estoy y las convenciones locales. Pero para ser honesto, donde quiera que rompa la línea solo hace que se vea mal. Así que estoy buscando algunas ideas sobre lo que debería hacer por ello.

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 línea en sí.

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

Gracias!

Author: corsiKa, 2010-09-16

5 answers

En general, rompo las líneas antes de los operadores, e indento las líneas siguientes:

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

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

Para mí, el operador líder claramente transmite que "esta línea fue continuada de otra cosa, no se sostiene por sí sola."Otras personas, por supuesto, tienen preferencias diferentes.

 34
Author: Anon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-21 12:22:53

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

  • Romper antes deel símbolo para operadores de no asignación.
  • Romper después de el símbolo de = y de ,.

En su caso, ya que está utilizando 120 caracteres, puede romperlo después del 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, daría dos pestañas (u ocho espacios) después del descanso, dependiendo de si las pestañas o los espacios se utilizan para la sangría.

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

 9
Author: Daniel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-26 03:48:05

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

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

De esta manera, la sangría aumentada sin llaves puede ayudarte a ver que el código se dividió porque la línea era demasiado larga. Y en lugar de 4 espacios, 8 lo hará más claro.

 6
Author: Colin Hebert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-16 19:23:54

Utiliza los métodos de fábrica estática de Guayaba para los mapas y solo tiene 105 caracteres.

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper = Maps.newHashMap();
 4
Author: whiskeysierra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-16 19:41:41

Creo que mover el último operador al principio de la siguiente línea es una buena práctica. De esa manera usted sabe de inmediato el propósito de la segunda línea, incluso no comienza con un operador. También recomiendo 2 espacios de sangría (2 pestañas) para una pestaña previamente rota, para diferenciarla de la sangría 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>();
 0
Author: Sasa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-01 13:20:53