En un proyecto actual, hemos configurado la compilación para poder mezclar Java y Scala. Me gustaría usar más Scala en nuestra base de código para hacer que el código sea más legible y conciso. En el proceso también aprende el idioma entregando características reales.
Así que planeo usar Scala para algunas clases para mostrar sus beneficios y convencer a otros desarrolladores de que también consideren usar Scala.
Para un servidor web basado en el descanso o un programa en general, qué tipo de estructuras de código se prestan al estilo de programación funcional de Scala.
Respuestas:
Un ejemplo típico si desea ilustrar la concisión del código funcional podría usar colecciones y sus operaciones. Por ejemplo, considere una clase
Customer
y un método para crear una lista ordenada de nombres de clientes a partir de una lista de clientes.Aquí está la implementación de Java:
Versión Scala:
NOTA
La concisión en términos de pulsaciones de teclas no siempre es una buena medida de la calidad del código y la facilidad de mantenimiento.
Además, en general, no recomendaría cambiar de Java a Scala solo porque Scala es más reciente. Si la mayoría de los miembros del equipo están más familiarizados con Java, el equipo será mucho más productivo con Java que con Scala (o cualquier otro lenguaje de programación que no conozcan bien).
He estado aprendiendo Scala en mi tiempo libre durante aproximadamente dos años, y solo recientemente (después de asistir a un curso en línea) tuve la sensación de que puedo ser más productivo en Scala que en Java. Antes de llegar a este punto, no habría considerado usar Scala para la producción.
fuente
Conciseness in terms of keystrokes is not always a good measure of code quality and maintainability
Especialmente cuando se codifica en Perl.Stream
los s: puede realizar búsquedas complejas de amplitud primero en un espacio de solución hasta que encuentre una solución (como encontrar una ruta de un determinado objeto a otro, con ciertas restricciones). No sé si esto es relevante para ti.Para todos, donde sea posible o para nada, solo use Java. De esta manera esto funcionará de manera sensata. Estuve haciendo tales experimentos hace mucho tiempo, pero en tiempos posteriores reescribes todo en uno o dos idiomas (para mantener algunas cosas si eso no se puede hacer en otro idioma) solo por claridad.
Si puede declarar la clase más corta en 2 líneas de código, eso no es una ventaja, no debe usar el lenguaje para esta "característica". Por ejemplo, también puede escribir un código funcional hermoso en líneas xxx y pasar el tiempo yyy y tal vez al mismo tiempo puede escribirlo en estilo OOP en xxx + 150 líneas en el tiempo aaa-2 horas con un beneficio de rendimiento (quién sabe). Lo que quiero decir es que no es posible decir "esta parte será mejor en Scala" y "esta parte en Java". En el desarrollo no debe descubrir características, en mi opinión, solo debe desarrollar sin mezclar y pensar en la lógica general en lugar de la implementación en el lenguaje X o Y, por eso, en mi opinión, para mayor claridad y productividad, debe elegir el lenguaje para el proyecto en lugar de para la función .
fuente
Sospecho que esto es una cuestión de cuán buenos son los programadores del equipo y cuánto están dispuestos a aprender cosas nuevas.
Scala es mucho más conciso y expresivo, pero igualmente más complejo. A cualquier programador que pueda hacer un buen uso de las abstracciones de alto nivel que ofrece, le gustará y será más productivo y nunca querrá volver al nivel simplificado de Java. Pero un programador que no es bueno en abstracciones de alto nivel o simplemente no quiere aprender nunca lo entenderá.
Además, no creo que deba usar ningún caso diseñado específicamente para Scala. Simplemente comience a escribir el prototipo en él y verá si es más productivo o no. Debería ser más productivo que valga la pena cambiar todo.
Y definitivamente no mezclaría los idiomas excepto por el uso de bibliotecas escritas en el otro. Comience a crear prototipos en Scala, vea qué tan bien funciona y elija uno u otro.
fuente
En mi experiencia (ciertamente limitada), el caso de uso que más he visto es usarlo para tener una sensación de superioridad y engreimiento sobre sus colegas que realmente envían cosas, y / u ocultar sus limitaciones al culpar a los "anticuados e poco elegantes" lenguaje que estás "obligado" a usar en lugar del nuevo atractivo;)
fuente