Puede crear varias plantillas de código Java en Eclipse a través de
Ventana> Preferencias> Java> Editor> Plantillas
p.ej
sysout
se expande a:
System.out.println(${word_selection}${});${cursor}
Puede activar esto escribiendo sysout
seguido deCTRL+SPACE
¿Qué plantillas de código Java útiles utiliza actualmente? Incluya el nombre y la descripción del mismo y por qué es increíble.
Estoy buscando un uso original / novedoso de una plantilla en lugar de una función existente incorporada.
- Crear log4J logger
- Obtenga el color swt de la pantalla
- Syncexec - Marco Eclipse
- Patrón Singleton / Generación Singleton Singleton
- Readfile
- Const
- Trazar
- Cadena de formato
- Comentario de código de revisión
- Formato de cadena
- Intenta finalmente bloquear
- Formato de mensaje i18n y registro
- Equalsbuilder
- Hashcodebuilder
- Inyección de objetos de primavera
- Crear FileOutputStream
System.out.println(${word_selection}${});${cursor}
significa? Parece que hay una manera de seleccionar una palabra y encerrarla automáticamente dentro de unasysout
llamada, ¿estoy en lo cierto? ¿Cómo?Respuestas:
Las siguientes plantillas de código crearán un registrador y las importaciones correctas, si es necesario.
SLF4J
Log4J 2
Log4J
Fuente .
JUL
fuente
Algunas plantillas adicionales aquí: Enlace I - Enlace II
Me gusta este:
readfile
ACTUALIZACIÓN : La versión Java 7 de esta plantilla es:
fuente
StandardCharsets.UTF_8
sobreCharset.forName("UTF-8")
.Dar formato a una cadena
MessageFormat: rodea la selección con un MessageFormat.
Esto me permite mover un cursor a una cadena, expandir la selección a toda la cadena (Mayús-Alt-Arriba), luego Ctrl-Espacio dos veces.
Bloquear la selección
bloquear: rodea las líneas seleccionadas con un intento finalmente bloquear. Suponga la presencia de una variable de bloqueo.
Las
${line_selection}
plantillas NB aparecen en el menú Surround con (Alt-Shift-Z).fuente
lock
yunlock
.acquire
yrelease
se usan para semáforos y su uso dentro de un bloque try-finally no es tan recomendable como con las cerraduras .Sé que estoy pateando una publicación muerta, pero quería compartir esto por el bien de la finalización:
Una versión correcta de la plantilla de generación de singleton, que supera el diseño de bloqueo de doble comprobación defectuoso (discutido anteriormente y mencionado en otro lugar)
Plantilla de creación Singleton: asígnele un nombre
createsingleton
Para acceder a los singletons generados con el anterior:
Plantilla de referencia Singleton: Nombre esto
getsingleton
:fuente
${enclosing_type}
previsto.${primary_type_name}
ejemplo de uso de enumeración :public enum ${primary_type_name} { INSTANCE; private ${return_type} ${name} = new ${return_type}(); public ${return_type} ${getName}(${}) { return ${name}; } ${cursor} }
Agregar fragmento de código para iterar sobre
Map.entrySet()
:Modelo:
Código generado:
fuente
${}
y que, en lugar de${cursor}
habilitar la "iteración de tabulación" entre campos. Gracias.Para
log
, un poco útil para agregar en la variable miembro.fuente
Cree un simulacro con Mockito (en el contexto de "declaraciones Java"):
Y en "miembros de tipo Java":
Simula un método nulo para lanzar una excepción:
Simula un método nulo para hacer algo:
Verifique el método simulado llamado exactamente una vez:
Verifique que el método burlado nunca se invoque:
Nueva lista vinculada con Google Guava (y similar para hashset y hashmap):
También uso una plantilla enorme que genera una clase de prueba. Aquí hay un fragmento acortado que todos los interesados deben personalizar:
fuente
Cheques nulos!
fuente
PreConditions.checkNotNull(...)
método en Guayaba es una alternativa muy legible (especialmente con importaciones estáticas)Uno de mis seres queridos es foreach :
Y rastrear , ya que lo estoy usando mucho para el seguimiento:
Acabo de pensar en otro y lo he encontrado en Internet algún día, const :
fuente
traceout
ya está disponible en Eclipse comosystrace
.Un pequeño consejo sobre sysout: me gusta cambiarle el nombre a "sop". Nada más en las bibliotecas de Java comienza con "sop" para que pueda escribir rápidamente "sop" y boom, se inserta.
fuente
Lanza una IllegalArgumentException con variable en el alcance actual (illarg):
Mejor
fuente
Nada sofisticado para la producción de código, pero bastante útil para las revisiones de código
Tengo mi plantilla coderev low / med / high hago lo siguiente
Y luego, en la vista Tareas, me mostrará todos los comentarios de revisión de código que quiero mencionar durante una reunión.
fuente
Algunas plantillas más aquí .
Incluye:
fuente
slf4j Logging
fuente
Propiedad de frijol
PropertyChangeSupport
fuente
Después de Java 7, una excelente manera de configurar los registradores que necesitan (o prefieren) referencias estáticas a la clase adjunta es usar la API MethodHandles recientemente introducida para obtener la clase de tiempo de ejecución en un contexto estático.
Un fragmento de ejemplo para SLF4J es:
Además de ser un simple fragmento en cualquier IDE, también es menos frágil si refactoriza cierta funcionalidad en otra clase porque accidentalmente no llevará el nombre de la clase.
fuente
Invocar código en el hilo de la GUI
Ato la siguiente plantilla al acceso directo
slater
para enviar rápidamente el código en el hilo de la GUI.fuente
Al probar con código, a veces me perdí la eliminación de algunos sistemas . Entonces me hice una plantilla llamada syt .
Antes de compilar, siempre reviso mis TODO y nunca me olvidaré de eliminar System.out nuevamente.
fuente
strf -> String.format("msg", args)
bastante simple pero ahorra un poco de tipeo.fuente
String.format("${string}",${objects})
porque Eclipse me permite tabular entre mi cadena y mi lista de objetos.String.format(${word_selection}${},)${cursor}
primero seleccione una cadena y luego use 'sf' en ella. Agregue el% sy así sucesivamente ...Obtenga un color SWT de la pantalla actual:
Suround con syncexec
Use el patrón de diseño singleton:
fuente
Y una adaptación de igual constructor, hashcodebuilder:
fuente
La plantilla para la declaración del registrador es excelente.
También creo linfo, ldebug, lwarn, lerror para los niveles de registro que uso con más frecuencia.
lerror:
fuente
Crea todo para un evento
Como los eventos son un poco difíciles de crear en Java, todas esas interfaces, métodos y cosas para escribir solo para 1 evento, hice una plantilla simple para crear todo lo necesario para 1 evento.
Si tiene eventos que comparten uno solo
EventObject
, simplemente elimine el personalizado insertado por la plantilla y cambie las partes apropiadas deraise___()
yon____()
.Había escrito un mecanismo de eventos agradable, pequeño y elegante usando una interfaz genérica y una clase genérica, pero no funcionaría debido a la forma en que Java maneja los genéricos. = (
Editar : 1) Me encontré con el problema de que los hilos agregaban / eliminaban oyentes mientras se producía un evento. No
List
se puede modificar mientras está en uso, por lo que agreguésynchronized
bloques donde se accede o usa la lista de oyentes, bloqueando la lista misma.fuente
Insertar los métodos de prueba deberían darse cuando
Vi una versión similar a esta recientemente mientras emparejé la programación con un muy buen desarrollador y amigo, y creo que podría ser una buena adición a esta lista.
Esta plantilla creará un nuevo método de prueba en una clase, siguiendo el enfoque Given - When - Then del paradigma de desarrollo basado en el comportamiento (BDD) en los comentarios, como una guía para estructurar el código. Comenzará el nombre del método con "should" y le permitirá reemplazar el resto del nombre del método ficticio "CheckThisAndThat" con la mejor descripción posible de la responsabilidad del método de prueba. Después de completar el nombre, TAB lo llevará directamente al
// Given section
, para que pueda comenzar a escribir sus condiciones previas.Lo he mapeado a las tres letras "tst", con la descripción "Métodos de prueba debería-dado-cuando-entonces";)
Espero que lo encuentres tan útil como lo hice cuando lo vi:
fuente
Inyección de primavera
Sé que esto es un poco tarde para el juego, pero aquí hay uno que uso para Spring Injection en una clase:
fuente
Aquí hay un constructor para clases no instanciables:
Este es para excepciones personalizadas:
fuente
Me gusta un comentario de clase generado como este:
El "yo ..." inmediatamente anima al desarrollador a describir lo que hace la clase. Parece mejorar el problema de las clases indocumentadas.
Y, por supuesto, $ Id $ es una palabra clave CVS útil.
fuente
He usado mucho estos fragmentos, buscando
null
valores y cadenas vacías.Utilizo las plantillas de "prueba de argumento" como primer código en mis métodos para verificar los argumentos recibidos.
testNullArgument
Es posible que desee cambiar el mensaje de excepción para que se ajuste al estándar de su empresa o proyecto. Sin embargo, recomiendo tener algún mensaje que incluya el nombre del argumento ofensivo. De lo contrario, la persona que llama de su método tendrá que buscar en el código para entender qué salió mal. (A
NullPointerException
sin mensaje produce una excepción con el mensaje "sin valor" bastante absurdo).testNullOrEmptyStringArgument
También puede reutilizar la plantilla de comprobación nula desde arriba e implementar este fragmento para verificar solo las cadenas vacías. Luego usaría esas dos plantillas para producir el código anterior.
Sin embargo, la plantilla anterior tiene el problema de que si el argumento in es definitivo, tendrá que modificar el código producido (el
${varName} = ${varName}.trim()
error fallará).Si usa muchos argumentos finales y desea verificar las cadenas vacías pero no tiene que recortarlos como parte de su código, puede ir con esto en su lugar:
testNullFieldState
También creé algunos fragmentos para verificar variables que no se envían como argumentos (la gran diferencia es el tipo de excepción, ahora es un
IllegalStateException
lugar).testNullOrEmptyStringFieldState
pruebaArgumento
Esta es una plantilla general para probar una variable. Me tomó algunos años aprender realmente a apreciar este, ahora lo uso mucho (¡en combinación con las plantillas anteriores, por supuesto!)
Ingrese un nombre de variable o una condición que devuelva un valor, seguido de un operando ("==", "<", ">" etc.) y otro valor o variable y si la prueba falla, el código resultante arrojará una IllegalArgumentException.
La razón de la cláusula if un poco complicada, con toda la expresión envuelta en un "! ()" Es para que sea posible reutilizar la condición de prueba en el mensaje de excepción.
Tal vez confundirá a un colega, pero solo si tiene que mirar el código, lo que podría no tener que hacer si arroja este tipo de excepciones ...
Aquí hay un ejemplo con matrices:
Obtiene este resultado llamando la plantilla, escribiendo "from.length" [TAB] "== to.length".
El resultado es mucho más divertido que una "ArrayIndexOutOfBoundsException" o similar y puede darles a los usuarios la oportunidad de resolver el problema.
¡Disfrutar!
fuente
Lo uso para MessageFormat (usando Java 1.4). De esa manera, estoy seguro de que no tengo concatenaciones que son difíciles de extraer al hacer la internacionalización.
i18n
También para iniciar sesión:
Iniciar sesión
fuente
Mis pocos favoritos son ...
1: Javadoc, para insertar un documento sobre el método que es un método de inyección de objetos Spring.
2: Ventana de depuración, para crear un FileOutputStream y escribir el contenido del búfer en un archivo. Se usa para cuando desea comparar un búfer con una ejecución anterior (usando BeyondCompare), o si no puede ver el contenido de un búfer (mediante inspección) porque es demasiado grande ...
fuente