tutorial studio programacion móviles fragments example dinamicos desde desarrollo curso boton aplicaciones abrir java text heredoc

java - studio - manual de programacion android pdf



Trabajar con fragmentos de texto grandes en fuente Java (3)

¿Hay alguna buena manera de trabajar con bloques de texto (cadenas) dentro del código fuente de Java? Muchos otros lenguajes tienen la sintaxis heredoc disponible, pero Java no. Esto hace que resulte bastante incómodo trabajar con elementos como las bibliotecas de etiquetas que emiten una gran cantidad de marcas estáticas, y las pruebas unitarias en las que es necesario realizar comparaciones con bloques de XML.

¿Cómo trabajan otras personas al respecto? ¿Es posible? ¿O solo tengo que aguantarlo?



Si bien podría usar ciertos formateadores para convertir e incrustar cualquier archivo de texto o literal largo como una cadena de Java (por ejemplo, con saltos de nueva línea, los escapes necesarios, etc.), no puedo pensar en situaciones frecuentes en las que necesitaría estas capacidades. .

La tendencia del software generalmente es separar el código de los datos en los que opera. Las secciones de texto grandes, aunque solo sean para visualización o comparación, son datos y, por lo tanto, típicamente se almacenan externamente. El costo de leer un archivo (o incluso almacenar en caché el resultado en la memoria) es bastante bajo. La internacionalización es más fácil. Cambiar es más fácil. El control de versiones es más fácil. Otras herramientas (por ejemplo, correctores ortográficos) se pueden usar fácilmente.

Estoy de acuerdo en que en el caso de pruebas unitarias en las que desee comparar las cosas con un simulacro, necesitará comparaciones de texto a gran escala. Sin embargo, cuando maneja archivos tan grandes, normalmente tendrá pruebas que pueden funcionar en varias entradas grandes diferentes para producir varias salidas de gran tamaño, así que ¿por qué no simplemente hacer que su prueba cargue los archivos apropiados en lugar de en línea?

Lo mismo ocurre con XML. De hecho, para XML, argumentaría que en muchos casos desearía leer el XML y construir un árbol DOM que luego compararía en lugar de hacer una comparación de texto que puede verse afectada por espacios en blanco. Y crear manualmente un árbol XML en su unidad de prueba es feo.


Si el texto es estático o puede parametrizarse, una posible solución sería almacenarlo en un archivo externo y luego importarlo. Sin embargo, esto crea archivos de E / S que pueden ser innecesarios o tener un impacto en el rendimiento. El uso de esta solución debería incluir el almacenamiento en caché del contenido del archivo para reducir el número de lecturas de archivos.