dojo-mars-rover/TECHDEBT.md

1.3 KiB

TODO

  • Reorder Responsibilities
    • long class
    • feature envy
    • inappropriate intimacy
    • data class
    • message chain

Mikado

  • Change var to val (immutable)
    • Rover.turnLeft use copy() on state
    • Rover.turnRight use copy() on state
    • Rover.move use copy() on state
    • Rover.constructor use copy() on state
      • Change RoverState to Data Class

RPP

  • Refine Abstractions
    • long parameter list
    • data clump
    • primitive obsession
    • middle man
  • Design Patterns
  • SOLID++

DONE

  • Make ktlint pass checks
  • Readability
    • comments
    • dead code
    • magic strings/numbers
    • bad naming
    • antipattern
    • scopes
  • Complexity
    • long method
    • duplicated code

Mikado

  • Clean up constants and private fields
    • Move move() into Heading.move(Position)
    • Move turnLeft() into Heading.turnLeft()
    • Move turnRight() into Heading.turnRight()
      • Remove HEADING_* constants
        • in move() compare to heading enum
        • in turnRight() compare to heading enum
        • in turnLeft() compare to heading enum
          • state.heading in Rover.constructor to enum
            • Change heading Char in RoverState to Heading enum
              • Create Heading enum