R: Long method

This commit is contained in:
Paul Hameteman 2025-10-14 21:45:15 +02:00
commit ab064c71f7
3 changed files with 33 additions and 27 deletions

View file

@ -1,9 +1,9 @@
# TODO # TODO
# RPP
- [ ] Complexity - [ ] Complexity
- [ ] long method - [ ] long method
- [ ] duplicated code - [ ] duplicated code
# RPP
- [ ] Reorder Responsibilities - [ ] Reorder Responsibilities
- [ ] long class - [ ] long class
- [ ] feature envy - [ ] feature envy

View file

@ -13,34 +13,40 @@ class Rover {
fun go(instructions: String) { fun go(instructions: String) {
for (instruction in instructions) { for (instruction in instructions) {
when (instruction) { when (instruction) {
COMMAND_TURN_LEFT -> { COMMAND_TURN_LEFT -> turnLeft()
when (state.heading) { COMMAND_TURN_RIGHT -> turnRight()
HEADING_EAST -> state.heading = HEADING_NORTH COMMAND_MOVE -> move()
HEADING_NORTH -> state.heading = HEADING_WEST
HEADING_WEST -> state.heading = HEADING_SOUTH
HEADING_SOUTH -> state.heading = HEADING_EAST
}
}
COMMAND_TURN_RIGHT -> {
when (state.heading) {
HEADING_EAST -> state.heading = HEADING_SOUTH
HEADING_SOUTH -> state.heading = HEADING_WEST
HEADING_WEST -> state.heading = HEADING_NORTH
HEADING_NORTH -> state.heading = HEADING_EAST
}
}
COMMAND_MOVE -> {
when (state.heading) {
HEADING_EAST -> state.positionX++
HEADING_SOUTH -> state.positionY--
HEADING_WEST -> state.positionX--
HEADING_NORTH -> state.positionY++
}
}
} }
} }
} }
private fun move() {
when (state.heading) {
HEADING_EAST -> state.positionX++
HEADING_SOUTH -> state.positionY--
HEADING_WEST -> state.positionX--
HEADING_NORTH -> state.positionY++
}
}
private fun turnRight() {
when (state.heading) {
HEADING_EAST -> state.heading = HEADING_SOUTH
HEADING_SOUTH -> state.heading = HEADING_WEST
HEADING_WEST -> state.heading = HEADING_NORTH
HEADING_NORTH -> state.heading = HEADING_EAST
}
}
private fun turnLeft() {
when (state.heading) {
HEADING_EAST -> state.heading = HEADING_NORTH
HEADING_NORTH -> state.heading = HEADING_WEST
HEADING_WEST -> state.heading = HEADING_SOUTH
HEADING_SOUTH -> state.heading = HEADING_EAST
}
}
val position: String val position: String
get() = "${state.positionX} ${state.positionY} ${state.heading}" get() = "${state.positionX} ${state.positionY} ${state.heading}"

View file

@ -4,4 +4,4 @@ class RoverState {
var positionX: Int = 0 var positionX: Int = 0
var positionY: Int = 0 var positionY: Int = 0
var heading: Char = HEADING_NORTH var heading: Char = HEADING_NORTH
} }