Added letters authored by Jay Shah (jrs349)'s avatar Jay Shah (jrs349)
...@@ -3,55 +3,55 @@ ...@@ -3,55 +3,55 @@
### **Quality Criteria and Inspection Items Checklist:** ### **Quality Criteria and Inspection Items Checklist:**
**Completeness (of reflection by code of requirements)** **Completeness (of reflection by code of requirements)**
* Each required function is provided as a public method a. Each required function is provided as a public method
* Each such method has appropriate parameters b. Each such method has appropriate parameters
**Consistency (of layout, name choice, and code organization)** **Consistency (of layout, name choice, and code organization)**
* Placement of braces ({ and }) done consistently throughout. a. Placement of braces ({ and }) done consistently throughout.
* Indentation is used, consistently, to indicate block structure within braces. b. Indentation is used, consistently, to indicate block structure within braces.
* Block comments precede the code they describe. c. Block comments precede the code they describe.
* The same names or abbreviations are used consistently for the same concept (e.g. not next, nextNode, and nxtn in three places in the same class). d. The same names or abbreviations are used consistently for the same concept (e.g. not next, nextNode, and nxtn in three places in the same class).
* Naming conventions for classes, class members (methods and variables), constants, and local variables, are distinct and consistent (e.g.ClassName, classMethod, CLASS_CONSTANT, and local_variable). e. Naming conventions for classes, class members (methods and variables), constants, and local variables, are distinct and consistent (e.g.ClassName, classMethod, CLASS_CONSTANT, and local_variable).
**Anomaly Management (of inputs and contexts which the requirements didn't anticipate)** **Anomaly Management (of inputs and contexts which the requirements didn't anticipate)**
* Input parameters to public methods, and inputs read from files, are checked explicitly for all unacceptable values. a. Input parameters to public methods, and inputs read from files, are checked explicitly for all unacceptable values.
* Unacceptable public input produces error output (System. err) and/or throws exceptions b. Unacceptable public input produces error output (System. err) and/or throws exceptions
* Unacceptable public input produces a documented result (e.g. zero, null, the empty String ...) when there is no exception thrown. c. Unacceptable public input produces a documented result (e.g. zero, null, the empty String ...) when there is no exception thrown.
* Input parameters to private methods are assumed acceptable and are not checked d. Input parameters to private methods are assumed acceptable and are not checked
* Input to protected methods is consistently assumed either private or public as above e. Input to protected methods is consistently assumed either private or public as above
**Efficient Processing (using as little processing time as is reasonable)** **Efficient Processing (using as little processing time as is reasonable)**
* Loops contain complex code, or other loops, only when necessary. a. Loops contain complex code, or other loops, only when necessary.
* Array processing (especially search) contains loop exit code to execute when the condition is found b. Array processing (especially search) contains loop exit code to execute when the condition is found
**Efficient Storage** **Efficient Storage**
* All local and instance variables are actually used somewhere a. All local and instance variables are actually used somewhere
**Simplicity** **Simplicity**
* No method is longer than one page (about 60 lines including comments). a. No method is longer than one page (about 60 lines including comments).
* Math expressions, control expressions (in ifs, whiles, fors, and switches) are as simple as possible. b. Math expressions, control expressions (in ifs, whiles, fors, and switches) are as simple as possible.
* Standard coding idioms (e.g. for (int i=0; i<array.length; ++i)) are used where appropriate. Short private methods are preferred to repeating the same code over and over in different places. c. Standard coding idioms (e.g. for (int i=0; i<array.length; ++i)) are used where appropriate. Short private methods are preferred to repeating the same code over and over in different places.
**Self-Description** **Self-Description**
* Comments are provided whenever the purpose or reason for doing something in the code is obscure. a. Comments are provided whenever the purpose or reason for doing something in the code is obscure.
* Comments are provided to describe every method, however briefly. b. Comments are provided to describe every method, however briefly.
* Comments are provided to describe the purpose, restrictions, and relationships between all instance variables in a class. c. Comments are provided to describe the purpose, restrictions, and relationships between all instance variables in a class.
* All names are chosen well and consistently to reflect their usage and purpose. d. All names are chosen well and consistently to reflect their usage and purpose.
* Constants (static final) are used instead of magic numbers. (e.g. Don't write 42, write static final ULT_ANS = 42; and then use ULT_ANS instead.) e. Constants (static final) are used instead of magic numbers. (e.g. Don't write 42, write static final ULT_ANS = 42; and then use ULT_ANS instead.)
* Booleans are not compared to boolean constants. (e.g. if (!found) is preferred to if (found == false)) f. Booleans are not compared to boolean constants. (e.g. if (!found) is preferred to if (found == false))
**Reusability** **Reusability**
* Public methods are as general-purpose as is consistent with the design a. Public methods are as general-purpose as is consistent with the design
* Public method headers do not reveal the known usage of the class by code outside the class b. Public method headers do not reveal the known usage of the class by code outside the class
**Modularity** **Modularity**
* Instance variables are not public a. Instance variables are not public
* Variables are declared as locally as possible b. Variables are declared as locally as possible
* Public method headers don't reveal the internal design of the class c. Public method headers don't reveal the internal design of the class
* System.exit is not called directly d. System.exit is not called directly
**Instrumentation** **Instrumentation**
* Every class has a parameterless toString method which returns a String containing a dump or summary of an instance of the class. a. Every class has a parameterless toString method which returns a String containing a dump or summary of an instance of the class.
### **Sections in Findings Report** ### **Sections in Findings Report**
... ...
......