Project peer review by group emergency
General
- G1: How creative is the project? (
0
: I've seen this on Youtube,1
: not creative2
: average,3
: creative,4
: very creative,5
: wow!)- Answer: 4
- Justification: The project solves a real issue that a lot of projects have to solve themselfs, but there exist already implementations of similar libraries
- 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 needs a lot of advanced mathematical knowledge and implementing the mathematical rules is not always easy
- G3: List 3 positive aspects of the project. Motivate your selection.
-
1. The project is very useful in a lot of different applications
-
2. The library provides a lot of methods and classes that the user would need and provides also points where the user can extend the library for their needs
-
3. Even though it has a lot of functionality, it is very lightweight in space and needed knowledge to use it.
-
- G4: List 3 negative aspects of the project. Motivate your selection.
- 1. The names of some classes (Float3, Float2,...) seem a bit confusing (Float3 sounds like an alternative implementation of Float) In our opinion something like FloatTuple2D or similar could have been easier to understand
- 2. There could have been a explanation why Float is needed. Vector has all the functionality of Float and some additional features, so we do not see a use-case for Float.
- 3. The text in the video is hard to read because of the font and the text goes away to fast. It is hard reading the text and the code at the same time. A voice-over would have been easier to follow.
Programming techniques
- PT1: Evaluate how well 5 programming techniques we learned throughout the course were adopted in the project. Assign a mark from
0
to5
to each technique, where0
means completely incorrect usage and5
means perfect usage.-
1. Interface
- Answer: 3
- Justification: The interfaces provided in the library define a lot of method and they are used throughout the project, but the interfaces can't be used without the concrete implementation of it and the user already needs to know which implementation of for example BaseOperations he is dealing with, because of the way generics are used in the interface. This removes a big part of the reason to use interfaces.
-
2. Collections
- Answer: 5
- Justification: Collections are always used when its suitable and if its possible, the methods of collections where used.
-
3. Custom Exceptions
- Answer: 4
- Justification: He used the custom exceptions in the right way and added a lot of information to them, but in some cases using an already existing exception could have been enough.
-
4. Method overloading
- Answer: 5
- Justification: He used it in situations where they are useful and they were used in a right way
-
5. Streams
- Answer: 5
- Justification: He used it to simplify operations when needed. He also used a lot functionality of streams.
-
1. Interface
Git repository
- GR 1: How appropriate is the
.gitignore
file of the project? (0
: missing,1
: very bad,2
: bad3
: average,4
: good,5
: very good)- Answer: 5
- Justification: All important files are excluded from the repository
- GR 2: How appropriate is the
README.md
file of the project? (0
: missing,1
: very bad,2
: bad3
: average,4
: good,5
: very good)- Answer: 5
- Justification: Everything is explained in the readme.
Maven
- M1: Can you compile the project via Maven? (
0
: no,1
: yes, but...,2
: yes)- Answer: 2
- Justification: Project gets compiled smoothly
- M2: Can you clean the project via Maven? (
0
: no,1
: yes, but...,2
: yes)- Answer: 2
- Justification: Project gets cleaned successfully
- 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: /
- Justification: Project is only a library and can not be run
- M4: Are the project's dependencies appropriately configured in
pom.xml
? (0
: no,1
: some,2
: yes)- Answer: 2
- Justification: All dependencies are configured correctly
- M5: Are all Maven plugins appropriately configured in
pom.xml
? (0
: no,1
: some,2
: yes)- Answer: 1
- Justification: Javadoc only runs with a correctly set JAVA_HOME variable. This problem could be mitigated with a correct configuration.
- M6: Does the project adopt Maven's standard directory layout? (
0
: no,1
: yes, but...,2
: yes)- Answer: 2
- Justification: The layout is followed.
Testing
- T1: Are all tests passing? Run
mvn test
. (0
: no,1
: yes, but...,2
: yes)- Answer: 2
- Justification: All test are passing
- 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: 4
- Justification: Not every method is covered, but all the important methods are being tested
- 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 test cover a lot of different cases, but in some cases boundary conditions could have been tested more.
- 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: All the tests are easy to understand.
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: 5
- Justification: The documentation is easily understandable.
- 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: 4
- Justification: Most of the information needed is provided by the documentation, but in some cases additional information is needed to understand the reason for some decisions in our opinion.
- D3: Can you generate documentation files for this project? Run
mvn javadoc:javadoc
. (0
: no,1
: yes, but...,2
: yes)- Answer: 2
- Justification: The documenation files get generated for this project.
- D4: How adequate are the non-javadoc comments written throughout the code? (
0
: mostly inadequate,1
: average,2
: mostly adequate,3
: awesome)- Answer: /
- Justification: No non javadoc comments in the project
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: 2
- Justification: The same code style was used throughout the project
- 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: 2
- *Justification:3 There was no code duplication that was not justifiable
- 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: Sometimes the code requires advanced mathematical knowledge to understand.
- 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: In some cases no arrays were used, where they would have been suitable. This could be for performance of the system
- 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 project itself is not runable, but the test run without errors.