Solución:
“Si el método crece, se vuelve muy doloroso leer el código”. Creo que parte de la respuesta es que los métodos no deberían crecer. El estilo de programación funcional es tener muchos métodos pequeños. El método de cálculo ya está en el lado grande.
Para responder a las preguntas más generales sobre las guías de estilo para la programación de Scala: Aquí hay un ejemplo representativo.
Aquí hay un enlace a la Guía de estilo de Scala.
La sección Curly Braces dice:
Tirantes rizados:
Las llaves deben omitirse en los casos en que la estructura de control representa una operación puramente funcional y todas las ramas de la estructura de control (relevantes para if / else) son expresiones de una sola línea. Recuerde las siguientes pautas:
if: omita las llaves si tiene una cláusula else. De lo contrario, rodee el contenido con llaves incluso si el contenido es solo una línea.
while: nunca omita las llaves (while no se puede usar de una manera puramente funcional).
para: omita las llaves si tiene una cláusula de rendimiento. De lo contrario, rodee el contenido con llaves, incluso si el contenido es solo una línea.
case: omita las llaves si la expresión case aparece en una sola línea. De lo contrario, utilice llaves para mayor claridad (aunque el analizador no las requiera).
val news = if (foo) goodNews() else badNews() if (foo) { println("foo was true") } news match { case "good" => println("Good news!") case "bad" => println("Bad news!") }
Ojalá la gente siguiera esta guía de estilo 🙁
Tenga en cuenta que no estoy de acuerdo con “Omitir frenillos si if
tiene un else
cláusula “. Preferiría ver el código así:
def calculate(s: String): Int = {
if (cache.contains(s)) {
cache(s)
} else {
val acc = new ChecksumAccumulator
for (c <- s) {
acc.add(c.toByte)
}
val cs = acc.checksum()
cache += (s -> cs)
cs
}
}
La guía oficial está en https://docs.scala-lang.org/style/ (adoptado de ahora eliminado http://davetron5000.github.io/scala-style/index.html, ver Web Archive).