Lines of code or verbosity2. Number of dependencies3. Test coverage4. Ease of testing5. Ease of reading6. Usage of common patterns or language features7. Good variable naming8. Amount of duplication