Project peer review Team: Twentyonecoders
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:
5
-
Justification: The project is simply out of this world. It can be helpful for CS students, but also for people who want to get into the vast programming world.
- G2: How difficult was it to implement the project? (
0
: no challenge, 1
: very easy, 2
: easy, 3
: fair, 4
: complex, 5
: insane)
-
Answer:
5
-
Justification: I think the 184 files speak for themselves.
- G3: List 3 positive aspects of the project. Motivate your selection.
-
1. UI and theming on point.
-
2. Own programming language, with custom editor.
-
3. Examples and challanges to learn the language and improve your skills.
- G4: List 3 negative aspects of the project. Motivate your selection.
-
1. When on two screens and opening a dropdown menu, the menu gets displayed on the opposite screen. However, this is most likely a JavaFX problem.
-
2. ?
-
3. ?
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. Lambdas
-
Answer:
5
-
Justification: Lambdas are mainly usded in the UI for listeners, which is the appropriate usage.
-
2. Streams
-
Answer:
5
-
Justification: Lambdas are Used to filter lists or find if a pattern matches and many other cases.
-
3. Collections
-
Answer:
5
-
Justification Mostly used for ArrayLists, in the right way.
-
4. Interfaces
-
Answer:
5
-
Justification: Interfaces are used to define methods that are used in different classes, like for exmaple the reload method in the Reloadable interface.
-
5. Exception handling
-
Answer:
5
-
Justification: Exception handling is mainly used to catch IOExceptions, and then prints the message.
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 contains all imaginable files and folders for all the different editors.
- 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:
5
-
Justification: The
README.md
contains all the documentation of every part of the project.
Maven
- M1: Can you compile the project via Maven? (
0
: no, 1
: yes, but..., 2
: yes)
-
Answer:
2
-
Justification: It compiles without warnings and issues.
- M2: Can you clean the project via Maven? (
0
: no, 1
: yes, but..., 2
: yes)
-
Answer:
2
-
Justification: The project cleans withou issues.
- 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
-
Justification: It runs without issues.
- M4: Are the project's dependencies appropriately configured in
pom.xml
? (0
: no, 1
: some, 2
: yes)
-
Answer:
2
-
Justification: It is configured perfectly.
- M5: Are all Maven plugins appropriately configured in
pom.xml
? (0
: no, 1
: some, 2
: yes)
-
Answer:
2
-
Justification: All plugins are configured in the right way.
- M6: Does the project adopt Maven's standard directory layout? (
0
: no, 1
: yes, but..., 2
: yes)
-
Answer:
2
-
Justification: The project adopt's the standard maven layout.
Testing
- T1: Are all tests passing? Run
mvn test
. (0
: no, 1
: yes, but..., 2
: yes)
-
Answer:
1
-
Justification:
debuggerSecondBreakScope()
, contained in the DebuggerTest stalls infinitively sometimes. This is because of wait notify and would probabely not occur in real use. The developers have promptly fixed the issue after beeing notified.
- 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:
5
-
Justification: Although it has roughly a 60% test coverage (648 TESTS)it is worthy of 5 points.
- 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:
5
-
Justification: They actually verify the expected behaviour of the program.
- 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 naming of the test illustrate very well what they do.
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 Javadoc documentation follows all the standards and contain all the most important informations.
- 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:
5
-
Justification: All the most important classes and methods are documented and explain the usage und how they work very well.
- D3: Can you generate documentation files for this project? Run
mvn javadoc:javadoc
. (0
: no, 1
: yes, but..., 2
: yes)
-
Answer:
2
-
Justification: Yes it runs without issues.
- D4: How adequate are the non-javadoc comments written throughout the code? (
0
: mostly inadequate, 1
: average, 2
: mostly adequate, 3
: awesome)
-
Answer:
3
-
Justification: The non-javadoc comments are used in specific points, but there they explain something.
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 indentations and spaces are consistant over the whole code.
- 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: We found no code duplication.
- 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 quantity and complexity of code makes it sometimes hard to follow, but the documentation helps alot.
- 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:
3
-
Justification: We found no excessive inefficiencies.
- 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 programs never crashed.