An Opinionated Checklist for Reviewing a Code Challenge
- BigO
- Recursive Approach
- Covers edge cases
- Example provided matches
- Return values matches
- Production ready
- No dead code
- No commented code
- Namespace usage
- No global variables
- Correct visibility modifiers
- No duplicated code
- No empty blocks
- Correct data types or structures
- Design patterns
- No mixed tabs vs spaces
- No Getters & Setters
- Use Exceptions rather than return codes
- Don't return null
- Make class final if not being used for inheritance
- Dependency Injection
- No Dependency Cycles
- Code linted
- Respecting community standards
- No issue phpcbf
- No issue php-cs-fixer
- Folder structure
- No debug code
- No complex expressions
- No bitwise operations
- No magic variables
- No magic values
- No magic methods
- Law of Demeter
- No over engineered
- DocBlocks
- README file
- Usage
- Code readability
- CLI help
- No TODOs
- No HACKs
- Logs
- Unusual behaviour is commented
- UML
- Dockerized
- Docker-compose
- .env file
- Translations
- Package manager
- Version within EOL
- Using most recent version
- DRY
- GRASP
- Quick & dirty
- SOLID
- OOP
- Speed
- Number of loops
- Color shell
- Variables names
- Spelling
- No double negations
- No nested if, for, ...
- No Buffer overflow
- No Freezing (infinite loop, memory leaks)
- No stacktraces
- Immutable variables
- Exceptions catching
- Closing resources (files, streams, ...)
- Input validation
- No deprecates
- No warnings
- No eval
- Unit tests
- Functional tests
- Coverage > 80%
- CI/CD tools
- Git repo
- Many small commits
- Good commit messages
- .gitignore