For a given test exercise.
Out of 22 points.
-
It works: The code implements the specification (8 points, meets spec is 8 - reduce the score for missing parts or bugs found)
-
The code is easy to read (4 points)
- Method names are self-describing and show intent (i.e. not misleading)
- Comments, if any, say why rather than how
- Methods are short
- Clear control flow (i.e you can follow what it is doing)
- It's tested (4 points)
- Test names are explanatory
- Expected test cases are present
- Tests are explicit (i.e. it is obvious what they do and not over 15+ lines per test method)
- The tests are logical (i.e. makes sense that they are there)
- It's maintainable and robust (4 points)
- No dead code
- defensive at the system boundries (e.g. user input, api boundries)
- Modularised (e.g. follows Single Responsibility Pattern)
- Can be built and ran in one step
- The write up (a README.md) is complete (2 points)
- It mentions how to run the application
- There is some reasoning about tradeoffs made while writing the application.