From ab064c71f7f4dae97d052a5c5fa844411825254e Mon Sep 17 00:00:00 2001 From: Paul Hameteman Date: Tue, 14 Oct 2025 21:45:15 +0200 Subject: [PATCH] R: Long method --- TECHDEBT.md | 4 +- src/main/kotlin/org/example/Rover.kt | 54 +++++++++++++---------- src/main/kotlin/org/example/RoverState.kt | 2 +- 3 files changed, 33 insertions(+), 27 deletions(-) diff --git a/TECHDEBT.md b/TECHDEBT.md index 00be4c9..37b2788 100644 --- a/TECHDEBT.md +++ b/TECHDEBT.md @@ -1,9 +1,9 @@ # TODO - -# RPP - [ ] Complexity - [ ] long method - [ ] duplicated code + +# RPP - [ ] Reorder Responsibilities - [ ] long class - [ ] feature envy diff --git a/src/main/kotlin/org/example/Rover.kt b/src/main/kotlin/org/example/Rover.kt index 9ccdc37..70150dc 100644 --- a/src/main/kotlin/org/example/Rover.kt +++ b/src/main/kotlin/org/example/Rover.kt @@ -13,34 +13,40 @@ class Rover { fun go(instructions: String) { for (instruction in instructions) { when (instruction) { - COMMAND_TURN_LEFT -> { - 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 - } - } - 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++ - } - } + COMMAND_TURN_LEFT -> turnLeft() + COMMAND_TURN_RIGHT -> turnRight() + COMMAND_MOVE -> move() } } } + 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 get() = "${state.positionX} ${state.positionY} ${state.heading}" diff --git a/src/main/kotlin/org/example/RoverState.kt b/src/main/kotlin/org/example/RoverState.kt index 5b83b93..708e310 100644 --- a/src/main/kotlin/org/example/RoverState.kt +++ b/src/main/kotlin/org/example/RoverState.kt @@ -4,4 +4,4 @@ class RoverState { var positionX: Int = 0 var positionY: Int = 0 var heading: Char = HEADING_NORTH -} \ No newline at end of file +}