Scala Language
Mejores prácticas
Buscar..
Observaciones
Prefiere vals, objetos inmutables y métodos sin efectos secundarios. Alcanzarlos primero. Use vars, objetos mutables y métodos con efectos secundarios cuando tenga una necesidad específica y una justificación para ellos.
- Programación en Scala , por Odersky, Spoon, y Venners
Hay más ejemplos y pautas en esta presentación de Odersky.
Mantenlo simple
No complique las tareas simples. La mayoría de las veces solo necesitarás:
- tipos de datos algebraicos
- recursion estructural
- Api similar a la mónada (
map
,map
flatMap
,fold
)
Hay muchas cosas complicadas en Scala, tales como:
-
Cake pattern
oReader Monad
para inyección de dependencia. - Pasando valores arbitrarios como argumentos
implicit
.
Estas cosas no están claras para los recién llegados: evite usarlas antes de que las entienda. El uso de conceptos avanzados sin una necesidad real confunde el código, haciéndolo menos fácil de mantener.
No empacar demasiado en una expresión.
- Encuentra nombres significativos para unidades de cómputo.
- Utilice
for
comprensión omap
para combinar cálculos juntos.
Digamos que tienes algo como esto:
if (userAuthorized.nonEmtpy) {
makeRequest().map {
case Success(respone) =>
someProcessing(..)
if (resendToUser) {
sendToUser(...)
}
...
}
}
Si todas sus funciones devuelven Either
u otro tipo de Validation
, puede escribir:
for {
user <- authorizeUser
response <- requestToThirdParty(user)
_ <- someProcessing(...)
} {
sendToUser
}
Prefiero un estilo funcional, razonablemente
Por defecto:
- Use
val
, novar
, siempre que sea posible. Esto le permite aprovechar al máximo una serie de utilidades funcionales, incluida la distribución del trabajo. - Utilice
recursion
ycomprehensions
s, no bucles. - Utiliza colecciones inmutables. Este es un corolario al uso de
val
siempre que sea posible. - Concéntrese en las transformaciones de datos, la lógica de estilo CQRS y no CRUD.
Hay buenas razones para elegir el estilo no funcional:
-
var
se puede utilizar para el estado local (por ejemplo, dentro de un actor). -
mutable
da mejor desempeño en ciertas situaciones.