From 75e1b9cb0019be44a9a9f5170e73271314bc30d4 Mon Sep 17 00:00:00 2001 From: Paul Hameteman Date: Tue, 14 Oct 2025 21:07:36 +0200 Subject: [PATCH] R: Readability (magic strings/numbers) --- TECHDEBT.md | 3 +- src/main/kotlin/org/example/Rover.kt | 55 ++++++++++++++++++---------- 2 files changed, 37 insertions(+), 21 deletions(-) diff --git a/TECHDEBT.md b/TECHDEBT.md index e59d688..1197a1b 100644 --- a/TECHDEBT.md +++ b/TECHDEBT.md @@ -2,7 +2,8 @@ - [ ] Readability - [x] comments - [x] dead code - - [ ] magic strings/numbers + - [x] magic strings/numbers + - [ ] bad naming - [ ] scopes # RPP diff --git a/src/main/kotlin/org/example/Rover.kt b/src/main/kotlin/org/example/Rover.kt index e35791e..400db99 100644 --- a/src/main/kotlin/org/example/Rover.kt +++ b/src/main/kotlin/org/example/Rover.kt @@ -3,38 +3,38 @@ package org.example class Rover { constructor(p: String) { val s = p.split(' ') - if (s.size >= 3) { - rs.xx = s[0].toInt() - rs.yy = s[1].toInt() - rs.dd = s[2][0] + if (s.size >= ROVER_MINIMUM_NEEDED_COMMANDS) { + rs.xx = s[ROVER_STARTING_POSITION_X].toInt() + rs.yy = s[ROVER_STARTING_POSITION_Y].toInt() + rs.dd = s[ROVER_COMMANDLIST][ROVER_COMMANDLIST_FIRST_COMMAND] } } fun go(cms: String) { for (c in cms) { when (c) { - 'L' -> { + COMMAND_TURN_LEFT -> { when (rs.dd) { - 'E' -> rs.dd = 'N' - 'N' -> rs.dd = 'W' - 'W' -> rs.dd = 'S' - 'S' -> rs.dd = 'E' + DIRECTION_EAST -> rs.dd = DIRECTION_NORTH + DIRECTION_NORTH -> rs.dd = DIRECTION_WEST + DIRECTION_WEST -> rs.dd = DIRECTION_SOUTH + DIRECTION_SOUTH -> rs.dd = DIRECTION_EAST } } - 'R' -> { + COMMAND_TURN_RIGHT -> { when (rs.dd) { - 'E' -> rs.dd = 'S' - 'S' -> rs.dd = 'W' - 'W' -> rs.dd = 'N' - 'N' -> rs.dd = 'E' + DIRECTION_EAST -> rs.dd = DIRECTION_SOUTH + DIRECTION_SOUTH -> rs.dd = DIRECTION_WEST + DIRECTION_WEST -> rs.dd = DIRECTION_NORTH + DIRECTION_NORTH -> rs.dd = DIRECTION_EAST } } - 'M' -> { + COMMAND_MOVE -> { when (rs.dd) { - 'E' -> rs.xx++ - 'S' -> rs.yy-- - 'W' -> rs.xx-- - 'N' -> rs.yy++ + DIRECTION_EAST -> rs.xx++ + DIRECTION_SOUTH -> rs.yy-- + DIRECTION_WEST -> rs.xx-- + DIRECTION_NORTH -> rs.yy++ } } } @@ -54,5 +54,20 @@ class Rover { class RoverState { var xx: Int = 0 var yy: Int = 0 - var dd: Char = 'N' + var dd: Char = DIRECTION_NORTH } + +private const val ROVER_MINIMUM_NEEDED_COMMANDS = 3 +private const val ROVER_STARTING_POSITION_X = 0 +private const val ROVER_STARTING_POSITION_Y = 1 +private const val ROVER_COMMANDLIST = 2 +private const val ROVER_COMMANDLIST_FIRST_COMMAND = 0 + +private const val COMMAND_TURN_LEFT = 'L' +private const val COMMAND_TURN_RIGHT = 'R' +private const val COMMAND_MOVE = 'M' + +private const val DIRECTION_EAST = 'E' +private const val DIRECTION_NORTH = 'N' +private const val DIRECTION_WEST = 'W' +private const val DIRECTION_SOUTH = 'S'