2008-10-06 9 views
10

Muy a menudo las reglas de limpieza (Preferencias> Java> Estilo de código> Limpieza) en Eclipse funcionan perfectamente y crean un código atractivo.¿Puedo definir excepciones a las reglas de limpieza de Eclipse?

Pero a veces, especialmente con comentarios y fragmentos de cadena concatenados (como consultas SQL en línea), la limpieza simplemente arruina las cosas y destruye mi formateo.

¿Hay alguna manera de decir a Eclipse "No toque este bloque de texto! Lo he formateado como a mí me gusta, y lo haría menos legible"?

+1

No sé la respuesta. Pero cuando no quiero volver a formatear un documento completo, a menudo solo formato una parte. Primero, selecciono las líneas; luego presiono Ctrl-Shift-F. La porción no seleccionada del archivo no se modifica, :-) –

+0

Al autor de la pregunta: Probablemente debería cambiar su respuesta aceptada a [respuesta de MPi] (http://stackoverflow.com/a/7096358/290213), como característica ha sido agregado recientemente a Eclipse. – dkarp

Respuesta

5

Supongo que realmente no significa 'Limpiar', pero la opción 'Formatear código fuente' oculta dentro. Se configura en Preferencias> Java> Estilo de código> Formateador. Y, de hecho, hay una opción llamada 'Etiquetas de encendido/apagado'. Lamentablemente, está apagado por defecto. Ahora usted lo escribe así:

// @formatter:off 
StringBuilder sql = new StringBuilder() 
    .append("SELECT whatever \n") 
    .append("FROM some_table"); 
// @formatter:on 

bien puede ser posible que la respuesta aceptada era correcta en el momento de la escritura, sin embargo, esta fue introducida en Eclipse 3.5, si no me equivoco.

0

No. (Al mejor de mi conocimiento, y he tenido el mismo problema y he mirado muchas veces duro y largo ...)

2

he experimentado el mismo problema, y ​​no mientras yo tener una solución, puedo decirte cómo soluciono el problema.

Debido a cómo funciona el formateo, evito deliberadamente líneas de código que son excesivamente largas. En general, cuando mantengo cortas las líneas, toma mejores decisiones sobre cómo formatear el código. Esto puede incluso trabajar con sentencias SQL, por ejemplo:

public static final String SELECT_SOMETHING = "SELECT" 
     + "OBJECTID, THIS, THAT, THEOTHER, THING" 
     + " FROM DBNAME.DBSCHEMA.TABLE_T" 
     + " WHERE ID = ?"; 

Esta declaración formatos razonable, porque en lo posible elementos se separaron y se concatenan juntos. Cuando no hago esto, consigo resultados impredecibles:

public static final String SELECT_SOMETHING = "SELECT OBJECTID, SOMETHING FROM DBNAME.DBSCHEMA.TABLE_T WHERE ID = ?"; 

Para comentarios, que ubican a todos en una sola línea cuando sea posible, y deje que el ajuste de línea cuando lo hace el formato.

Además, es posible cambiar el estilo con el formateador de código para que las cosas funcionen mejor para su estilo de codificación. Es posible que desee que todos en el equipo utilicen el mismo formato, solo para evitar conflictos. Debido a que es más fácil comparar los cambios con otros desarrolladores o versiones anteriores utilizando su herramienta de control de origen, incluso si hace que partes de su código sean menos legibles, el uso del formateador aún me ha beneficiado.

Aún así, entiendo su frustración cuando el formateador toma malas decisiones.

1

Sensación de dudoso sobre respondiendo a mi propia pregunta, pero hay una solución que actualmente hacer (nota: tengo estas reglas de limpieza como una acción de guardar-):

Guardar (con Ctrl/Cmd-S, no sé si importa cómo se guarda) el código, y deja que Eclipse arruine tu formateo. A continuación, presione Ctrl/Cmd-Z para deshacer, e inmediatamente vuelva a guardar. El formato vuelve a su formato original y parece guardarse como estaba previsto.

0

(sólo para comentarios Javadoc)

Si tengo un bloque de texto que da formato como a mí me gusta, yo los encierran por el <pre> </pre > etiquetas.

0

si no desea que un campo se convierta en definitivo (i.i: porque quiere cambiarlo durante la depuración), simplemente se lo asigna al constructor. Esto recibiría una advertencia de eclipse, pero su campo permanecerá no final.

1

Para las declaraciones de SQL en el código, puede poner un carácter de comentario de una sola línea al final de cada línea. Entonces el formateador no puede formatearlo.Es más feo que no tener que hacerlo, pero es más bonito que si Eclipse lo formatea.

StringBuffer sql = new StringBuffer() // 
    .append("SELECT whatever \n") // 
    .append("FROM some_table"); 
Cuestiones relacionadas