Project Peer Review by EndlessMaze
General
-
G1: How creative is the project? (0: I've seen this on YouTube, 1: not creative 2: average, 3: creative, 4: very creative, 5: wow!)
- Answer: 4
- Justification: I found the project very creative, the idea and the tiles are original.
-
G2: How difficult was it to implement the project? (0: no challenge, 1: very easy, 2: easy, 3: fair, 4: complex, 5: insane)
- Answer: 4
- Justification: The project is complex and well executed, but it could have used some more technologies like abstract classes or interfaces (or design patterns) to optimize the code.
-
G3: List 3 positive aspects of the project. Motivate your selection.
- 1 The UI is really well done
- 2 The game is easy to understand
- 3 The concept of the game is interesting
-
G4: List 3 negative aspects of the project. Motivate your selection.
- 1 Structure of the project
- Some packages could improve the quality of the project structure
- 2 Useless part of code / repetition
- The class Controller is empty, some methods are too repetitive
- 3 Programming techniques list missing inside the README.md file
- 1 Structure of the project
Programming techniques
PT1: Evaluate how well 5 programming techniques we learned throughout the course were adopted in the project. Assign a mark from 0 to 5 to each technique, where 0 means completely incorrect usage and 5 means perfect usage.
-
1 Lambda
- Answer: 3
- Justification: Lambda expression are used only to manage the buttons of javafx
-
2 Exception Handling
- Answer: 5
- Justification: try/catch blocks are used correctly, mostly related to I/O exceptions.
-
3 File I/O
- Answer: 4
- Justification: Correct usage of File I/O with the java.nio package
-
4 Collections
- Answer: 5
- Justification: HashMaps are used to store the position of the images
-
5 Serialization
- Answer: 5
- Justification: Serialization to csv to save the score.
Git repository
-
GR 1: How appropriate is the .gitignore file of the project? (0: missing, 1: very bad, 2: bad 3: average, 4: good, 5: very good)
- Answer: 3
- Justification: Some extensions name are missing and the .txt extension should be removed
-
GR 2: How appropriate is the README.md file of the project? (0: missing, 1: very bad, 2: bad 3: average, 4: good, 5: very good)
- Answer: 3
- Justification: Not all the programming techniques used are written and the video presentation is missing.
Maven
-
M1: Can you compile the project via Maven? (0: no, 1: yes, but..., 2: yes)
- Answer: 2
-
M2: Can you clean the project via Maven? (0: no, 1: yes, but..., 2: yes)
- Answer: 2
-
M3: Can you run the project via Maven? Check README.md on how to run the project. (0: no, 1: yes, but..., 2: yes)
- Answer: 2
-
M4: Are the project's dependencies appropriately configured in pom.xml? (0: no, 1: some, 2: yes)
- Answer: 2
-
M5: Are all Maven plugins appropriately configured in pom.xml? (0: no, 1: some, 2: yes)
- Answer: 2
-
M6: Does the project adopt Maven's standard directory layout? (0: no, 1: yes, but..., 2: yes)
- Answer: 1
- Justification: The texture folder should be in the resources folder, other than that the project adapt Maven's standard directory layout.
Testing
-
T1: Are all tests passing? Run mvn test. (0: no, 1: yes, but..., 2: yes)
- Answer: 2
-
T2: How well do the tests cover the code? (0: no tests, 1: no important method, 2: some important methods, 3: most important methods, 4: all important methods, 5: 100% test coverage)
- Answer: 2
- Justification: Some methods are covered but not the majority, only the most fundamental methods
-
T3: Do the tests actually verify the expected behavior of the program? (0: no tests, 1: useless tests, 2: most don't, 3: some do, some don't, 4: most do, 5: awesome tests)
- Answer: 4
- Justification: They verify the behavior of the project's core methods.
-
T4: How well can you understand what the tests are supposed to verify? (0: no tests, 1: what is going on?, 2: most are not understandable, 3: some are understandable, some aren't, 4: most are understandable, 5: all test are understandable)
- Answer: 4
- Justification: Most of the tests are clear, but some are hard to follow
Documentation
-
D1: How understandable is the Javadoc written for classes, fields and methods of the program? (0: no documentation, 1: very poor, 2: poor, 3: average, 4: good, 5: awesome)
- Answer: 4
- Justification: The documentation help at understanding the project's method.
-
D2: How useful is the Javadoc written for classes, fields and methods of the program? (0: no documentation, 1: irrelevant, 2: little utility, 3: average, 4: useful, 5: very useful)
- Answer: 3
- Justification: Some methods are not documented and some other lack proper explanations.
-
D3: Can you generate documentation files for this project? Run mvn javadoc:javadoc. (0: no, 1: yes, but..., 2: yes)
- Answer: 2
-
D4: How adequate are the non-javadoc comments written throughout the code? (0: mostly inadequate, 1: average, 2: mostly adequate, 3: awesome)
- Answer: 2
- Justification: There are not many non-javadoc comments, but the one that are present fulfill their purpose.
Code quality
-
Q1: Is the code style adopted throughout the project consistent? Consider how whitespace is represented (spaces or tabs), tab size, naming conventions for classes, methods and variables, indentation, braces usage, line width. See Google Java Style Guide as an example of code style guidelines. (0: no, 1: yes, but..., 2: yes)
- Answer: 1
- Justification: Some white spaces and blank lines are missing
-
Q2: How would you rate the project in terms of code duplication? (0: a lot of duplication, 1: some duplication, 2: barely any duplication, 3: no code duplication / only justifiable duplication)
- Answer: 1
- Justification: There are some code duplication
- In the method setEntityNumber() of the Spawn_Logic.java class some cases are redundant
- In the FileLoader class
- In the Movement_Logic class
-
Q3: How easy it is to understand how the program works by looking at the source code? (0: mostly hard to understand, 1: some fragments are hard to follow, 2: not hard, but not easy, 3: easy to understand)
- Answer: 1
- Justification: Some methods are too long and complex, (specially the methods in the Main class) a better subdivision could improve the code structure and understandability.
-
Q4: Is any section of the program excessively inefficient? (0: mostly hard to understand, 1: some fragments are hard to follow, 2: not hard, but not easy, 3: easy to understand)
- Answer: 2
- Justification: There are some methods that are unused, the Controller class is empty.
-
Q5: Does the program crash unexpectedly (e.g. by an uncaught exception)? (0: all the time, 1: rarely, 2: it happened once, 3: never)
- Answer: 3
- Justification: The program worked as intended