Skip to content

Instantly share code, notes, and snippets.

@WadeWaldron
WadeWaldron / Tic.scala
Created March 18, 2016 17:14
StatsDrivenDevelopment-3
def tic(name: String)
@WadeWaldron
WadeWaldron / MyClass.scala
Created March 18, 2016 16:58
StatsDrivenDevelopment-2
class MyClass extends Metrics {
def myMethod():Unit = {
timed[T](“MyClass.MyMethod”) {
// Execute whatever code your method needs here.
}
}
}
@WadeWaldron
WadeWaldron / Metrics.scala
Created March 18, 2016 16:57
StatsDriveDevelopment-1
trait Metrics {
def timed[T](name: String)(f: => T):T
def succeeded(name: String)
def failed(name: String)
def tic(name: String)
def measured(name: String, value: Long)
}
@WadeWaldron
WadeWaldron / Kilograms.scala
Created March 7, 2016 21:20
DDD-Tiny-Types-10
case class Kilograms(value: Double) extends AnyVal
implicit def kilogramsToDouble(kilos: Kilograms): Double = kilos.value
implicit def doubleToKilograms(value: Double): Kilograms = Kilograms(value)
implicit def poundsToDouble(pounds: Pounds): Double = pounds.value
implicit def doubleToPounds(value: Double): Pounds = Pounds(value)
implicit def kilogramsToPounds(kilos: Kilograms): Pounds
implicit def poundsToKilograms(pounds: Pounds): Kilograms
@WadeWaldron
WadeWaldron / Conversions.scala
Created March 7, 2016 21:17
DDD-Tiny-Types-7
def kilogramsToPounds(kilos: Kilograms): Pounds = kilos * 2.20462
def poundsToKilograms(pounds: Pounds): Kilograms = pounds / 2.20462
@WadeWaldron
WadeWaldron / Weight.scala
Created March 7, 2016 21:17
DDD-Tiny-Types-6
case class Kilograms(value: Double)
case class Pounds(value: Double)
@WadeWaldron
WadeWaldron / EmailAddress.scala
Created March 7, 2016 21:16
DDD-Tiny-Types-5
case class EmailAddress(value: String) {
def localPart(): String = …
def domain(): String = ...
}
@WadeWaldron
WadeWaldron / EmailAddress.scala
Created March 7, 2016 21:15
DDD-Tiny-Types-4
case class EmailAddress(value: String) {
// Execute validation logic
}