Skip to content

Course Peer Review #5

@joonarafael

Description

@joonarafael

Course Peer Review

Repository cloned 14.2.

Software Structure & Code Quality

The software structure is exceptional, classes and namespaces are logically split into separate files and folders.

Really good isolation of UI, algorithms, and other core logic. This makes the debugging just that much easier.

I've got no previous C# experience, but I can say the code is generally well written and follows the 'single responsibility' principle. The codebase prospers from a thorough commenting culture; variables and classes have good concise explanations.

There are some places, e.g. the Jump() function within JPS, that could possibly be restructured into helper functions (in a similar fashion the canMove() is implemented).

Recommendations for the Software

  • No real error handling for command "3. Show map" before a map selection is made. Currently this action, while an edge case, results in a runtime exception.

  • Could Dijkstra's algorithm be improved? There are many Dijkstra variants, maybe you don't want to change it, but this is my suggestion: Add some kind of logic to cut the node processing when the endpoint has been found. In your current implementation, there's e.g. the case where the starting point and end point are the same point, and the algorithm still continues to process every remaining node.

  • I couldn't generate the testing coverage report as I'm on Linux and .bat files cannot be executed without manual conversion to .sh format. But this is my own fault. I'd still, however, suggest adding some kind of CI pipeline, e.g. GitHub Actions, to generate automatically a coverage report to Codecov, for example.

Positive Notes

  • Really good map selection. The map preview is not practical for large maps, but what can you do, it is still extremely valuable to have those giant maps available!

  • Nice touches for the terminal interface, especially the display for result examination in a table-like view is superb. Command descriptions are short and everything can be seen at once. No unnecessary jargon on the screen. Excellent.

  • The debugging view is mesmerizing to watch! This 'animation' of the pathfinding was a staggering feature to find!

Overall, the software is looking good! Algorithms run like a charm and I was not able to find any errors or colossal inconsistencies in the implementations. I'd say the algorithms and data structures are generally in good order. Keep up the good work!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions