diff --git a/TECHDEBT.md b/TECHDEBT.md index efa397a..49e1998 100644 --- a/TECHDEBT.md +++ b/TECHDEBT.md @@ -1,11 +1,18 @@ # TODO - -# RPP - [ ] Refine Abstractions - [ ] long parameter list - [ ] data clump - [ ] primitive obsession - [ ] middle man + +# Mikado +- [x] Remove deltaX, deltaY in Heading + - [x] NORTH, etc -> Vector(0, 1) + - [x] move -> return Pair but using vector + - [x] Add Vector to enum class Heading + - [x] Create Vector data class + +# RPP - [ ] Design Patterns - [ ] SOLID++ diff --git a/src/main/kotlin/org/example/Heading.kt b/src/main/kotlin/org/example/Heading.kt index 0b36c19..2176e31 100644 --- a/src/main/kotlin/org/example/Heading.kt +++ b/src/main/kotlin/org/example/Heading.kt @@ -1,10 +1,10 @@ package org.example -enum class Heading(val symbol: Char, val deltaX: Int, val deltaY: Int) { - NORTH('N', 0, 1), - EAST('E', 1, 0), - SOUTH('S', 0, -1), - WEST('W', -1, 0), +enum class Heading(val symbol: Char, val vector: Vector) { + NORTH('N', Vector(0, 1)), + EAST('E', Vector(1, 0)), + SOUTH('S', Vector(0, -1)), + WEST('W', Vector(-1, 0)), ; fun turnLeft(): Heading = @@ -26,7 +26,7 @@ enum class Heading(val symbol: Char, val deltaX: Int, val deltaY: Int) { fun move( x: Int, y: Int, - ): Pair = Pair(x + deltaX, y + deltaY) + ): Pair = Pair(x + vector.deltaX, y + vector.deltaY) override fun toString(): String = symbol.toString() diff --git a/src/main/kotlin/org/example/Vector.kt b/src/main/kotlin/org/example/Vector.kt new file mode 100644 index 0000000..d20741b --- /dev/null +++ b/src/main/kotlin/org/example/Vector.kt @@ -0,0 +1,6 @@ +package org.example + +data class Vector( + val deltaX: Int, + val deltaY: Int, +)