Hide internal limits while exposing simple labels.

Private State

PrivateHelpers.scala
class ScoreCard(raw: Int) {
  private val low = 0
  private val high = 100

  val score = {
    if (raw < low) {
      low
    } else if (raw > high) {
      high
    } else {
      raw
    }
  }

  val label = if (score >= 60) "pass" else "retry"

  override def toString: String = "[score-card]"
}

object Main {
  def main(args: Array[String]): Unit = {
    val raw = 
    val card = new ScoreCard(raw)

    println("raw=" + raw)
    println("score=" + card.score)
    println("label=" + card.label)
  }
}
class ScoreCard(raw: Int) {
  private val low = 0
  private val high = 100

  val score = {
    if (raw < low) {
      low
    } else if (raw > high) {
      high
    } else {
      raw
    }
  }

  val label = if (score >= 60) "pass" else "retry"

  override def toString: String = "[score-card]"
}

object Main {
  def main(args: Array[String]): Unit = {
    val raw = 
    val card = new ScoreCard(raw)

    println("raw=" + raw)
    println("score=" + card.score)
    println("label=" + card.label)
  }
}
class ScoreCard(raw: Int) {
  private val low = 0
  private val high = 100

  val score = {
    if (raw < low) {
      low
    } else if (raw > high) {
      high
    } else {
      raw
    }
  }

  val label = if (score >= 60) "pass" else "retry"

  override def toString: String = "[score-card]"
}

object Main {
  def main(args: Array[String]): Unit = {
    val raw = 
    val card = new ScoreCard(raw)

    println("raw=" + raw)
    println("score=" + card.score)
    println("label=" + card.label)
  }
}
private-state Private values keep internal rules inside a class while public fields return simple results.