Behavior | - Exhibits correct behavior in all cases, including edge, corner, and error cases
| - Exhibits correct behavior in all common cases
- Throws expected exceptions in all cases
| - Exhibits incorrect behavior in some common cases
- Lacks some required functionality
- Does not throw expected exceptions in some cases
| - Behavior does not resemble specification
- Lacks significant portions of required functionality
|
Abstraction and Design | - Classes contain no redundant constructors
- All methods are clear and concise and include no extraneous parameters
- All methods include a proper access modifier
- Classes contain only the most essential fields and all fields are initialized appropriately
- All constants are declared correctly and used in all appropriate places
- Most appropriate type, including interface types, used in all expected places
| - No redundancy exists between methods
- All methods are clear and concise
- Classes contain no extraneous constructors
- Classes contain reasonable fields
- All constants are declared correctly
- Reasonable types used in all places
- All public methods are specified public
| - Redundancy exists between methods
- Some methods are overly long or complex
- Classes contain redundant or extraneous constructors or public methods
- Classes contain extraneous or unnecessary fields
- Constants are declared incorrectly
- Unreasonable or inappropriate types used in some places
| - Not enough code present to evaluate effectively
- Required methods or constructors missing
- No fields present
|
Use of Concepts | - Most appropriate variant of all control flow constructs used and properly factored and simplified
- Recursive methods contain no extraneous cases or calls
- No expensive operations are unnecessarily recomputed
- Most appropriate data structure used in all cases
- All assignment-specific requirements met
| - Appropriate control flow constructs used
- Recursive methods contain extraneous cases or calls
- Does not create any unnecessary objects
- Appropriate data structure used in all cases
- Key assignment-specific requirements met
| - Inappropriate control flow constructs used
- Recursive methods contain redundant cases or calls
- Creates unnecessary objects
- Inappropriate data structure used in some cases
- Some assignment-specific requirements not met
| - Not enough code present to evaluate effectively
- Required language features or concepts not used
- Banned or inappropriate language features or concepts used
|
Documentation and Readability | - Header comments on all classes and methods are well-written and contain all relevant information
- All identifiers are meaningful and follow prescribed naming conventions
- All code is indented and spaced consistently and cleanly
- No lines longer than 100 characters
- Code has no "magic numbers"
- Exceptions thrown as soon as possible
- Personal style choices are consistent and reasonable
| - Header comments present on all classes and methods
- Some identifier names are not meaningful or fail to follow prescribed conventions
- No complete blocks are indented or spaced incorrectly
- Some lines longer than 100 characters
| - Header comments missing on some classes and/or methods
- Entire code blocks are indented or spaced incorrectly
| - Not enough code present to evaluate effectively
- Code shows little or no effort follow code quality guidelines
- Code is extremely difficult to read and understand
|