Project Review by The Bakaful Team
Ilaria Santangelo, Sebastian Paz
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: 3
-
Justification: These games are not that rare, but the bang thing was new
- 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: It is an average project, but working alone is not easy
- G3: List 3 positive aspects of the project. Motivate your selection.
-
1. Straightforward UI and intuitive gameplay - We could familiarize with the game really fast.
-
2. Nice and creative graphics - The colors combine well, and the sprites are fun.
-
3. Leaderboard and score - It is amusing to keep track of the scores and compare them with friends.
- G4: List 3 negative aspects of the project. Motivate your selection.
-
1. Entities spawn: - It can be improved. Sometimes you get so many potions that it is impossible to lose
-
2. Bang bug: - There is a bug where sometimes you gain infinite bang powers if there is a bang tile in the top center cell
-
3. Title bar missing: - It could be added, we cannot minimize or close the game
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. I/O
- Answer: 5
-
Justification: The I/O technique is really important for this project, there are many sprites which are correctly handled and displayed
-
2. Deserialization
- Answer: 4
-
Justification: Although there is only one CSV to read, it's use is correct and helpful to display the leaderboards and maybe import others
-
3. Exception handling
- Answer: 5
-
Justification: As he used I/O and deserialization, he had to handle exceptions. They're simple but effective
-
4. Abstract classes
- Answer: 2
-
Justification: All the entities extend the abstract class "Entity", which in the same time implements the Entity interface.
The entities could have implemented the interface by themselves as the Entity abstract class is empty. The developer could have declared the objects
'HP', 'name', 'sprite' and 'fileLoader' as every entity has those variables.
-
5. Collections
- Answer: 4
-
Justification: Some lists, maps, and sets are mostly well-used. The hashmaps are important for the table cells and their tiles.
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: 5
-
Justification: It's fine
- 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: Most of the content is there. But it's missing the 10 programming techniques used. There's no video
Maven
- M1: Can you compile the project via Maven? (
0
: no, 1
: yes, but..., 2
: yes)
- Answer: 2
-
Justification: Yes, and run it too, with a single command.
- M2: Can you clean the project via Maven? (
0
: no, 1
: yes, but..., 2
: yes)
- Answer: 2
-
Justification: Yes
- 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: 1
-
Justification: Yes, it compiles and runs automatically. Although it only works with the second command.
- M4: Are the project's dependencies appropriately configured in
pom.xml
? (0
: no, 1
: some, 2
: yes)
- Answer: 2
-
Justification: Yes, they are
- M5: Are all Maven plugins appropriately configured in
pom.xml
? (0
: no, 1
: some, 2
: yes)
- M6: Does the project adopt Maven's standard directory layout? (
0
: no, 1
: yes, but..., 2
: yes)
- Answer: 1
-
Justification: Mostly yes, but the tests folder should outside main. And the textures should be in the resources folder.
Testing
- T1: Are all tests passing? Run
mvn test
. (0
: no, 1
: yes, but..., 2
: yes)
- Answer: 1
-
Justification: All the tests pass, but one test (entityPositionToStringTest()) does not check anything. The code to test the position of the main character is commented, so it runs correctly even if it does not test anything.
- 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: 3
-
Justification: Generally, some methods are covered, others could have been covered as well, like methods for the motion of the main character in different tiles.
- 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: The majority of them verifies the code, but one test verifies nothing.
- 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: 5
-
Justification: The behaviour of all the test is easily understandable.
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: 3
-
Justification: Most of the methods and classes written describe their scope and are easy to understand.
- 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: 2
-
Justification: There are a lot of fields, methods and classes that are not documented. The description of
parameters and the return objects is not there, just the empty annotation.
- D3: Can you generate documentation files for this project? Run
mvn javadoc:javadoc
. (0
: no, 1
: yes, but..., 2
: yes)
- Answer: 2
-
Justification: It is generated successfully
- D4: How adequate are the non-javadoc comments written throughout the code? (
0
: mostly inadequate, 1
: average, 2
: mostly adequate, 3
: awesome)
- Answer: 1
-
Justification: There are few non-javadoc comments, they describe the functionality
of the methods in a really basic way. There is a dangling TO-DO comment there.
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: Most of the code has a standard Java format, although there are issues with the whitespaces.
- 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: 0
-
Justification: There is a lot of code duplication in the updateContent, move, processMouseMoved and Tile classes
He could have created methods and pass parameters instead of writing the same code for every single tile.
There is also code duplication in the conditionals that will run anyway. That code could have been
written at the end of the conditional structure instead of in each 'else if'.
- 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: 2
-
Justification: The code is mostly written using straightforward techniques, the logic is kind of easy to understand, but
some JavaFX methods are not that easy to follow for who hasn't taken a deeper look into this API, like us.
- 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: 1
-
Justification: So much code duplication makes the program inefficient
- 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: It has never crashed