Testing (10) |
Insufficient automated tests. |
Automated unit testing code is adequate for the given project. |
Naming (10) |
Most names used are short and/or unhelpful. |
Modules/functions/variables are clearly named to reflect their functionality (self-documenting code). |
Data Modelling (10) |
Program data is stored in individual variables without using appropriate data structures to organize it. |
Custom classes and common data structures such as arrays and dictionaries are appropriately used to organize the program data. |
Functional Decomposition (10) |
The project has few functions or functions lack a clear, singular purpose. |
Functions have a clear, singular purpose. Long functions are avoided. |
Code Duplication (10) |
The project has frequent instances of code duplication |
Code duplication is generally avoided. |
Code Modularity (10) |
The code is barely decomposed into modules/classes. |
The code is for the most part decomposed into suitable modules/classes with well-defined responsibilities. |
Version Control (10) |
Few commits are made, often addressing multiple concerns (not atomic). |
Frequents commits are made, each addressing just one project concern (atomic). |
Issue Management (5) |
Issues are not used effectively. |
Issues are used effectively to organize the work. |
Formatting (5) |
Contains many long lines of code or blocks of commented-out code which should have been deleted. |
Code has consistent and appropriate indenting and spacing that reflects the logical structure of the code. |
Project Structure (5) |
The code consists of a few very large files containing disparate elements. |
The code is comprised of separate, well-focused files, none of them too large. |
Resource Separation (5) |
Literal values are frequently used directly in the program. |
Literal values are typically stored in constant variables instead of being used directly. |
Inline Comments (5) |
Code contains unhelpful inline comments, or complex code lacks explanatory inline comments. |
Explanatory inline comments are used when and only when needed to clarify complex code segments. |
Code Documentation (5) |
Modules and functions are in general not documented. |
Most modules and functions are adequately documented. |