- Do the code provide the desired functionality correctly? Are there any possible bugs?
- Does the code have tests for all the "complex" logics in it?
- Are the tests maintainable and well designed?
- Do they respect the test pyramid to avoid taking so much time to run?
- Are there any performance bootlenecks? Queries, loops, response times, etc.
- Does the code follows the project/company standards?
- Is it duplicating stuff?
- Are there other (better) ways of implemeting it? (maybe design partterns)
- Do the code uses clear and meaningful names for variables, functions and classes?
- Are they simpler ways of doing the same thing? Maybe the complexity is necessary for performance reasons.
- Do the "not so clear" parts have comments? Should it be refactored?
- Should it update the project documentation?