home—info—lects—labs—exams—hws
tutor/PIs—java.lang docs—java.util docs
general-grading-guide
general grading guide
Some common errors, marked with greek letters (lower-case).
(See also, common proofreading marks.)
- ι (iota):
Poor indentation.
The principle is simple:
if one line is a sub-part of another, then indent it.
For instance:
-
The body of a loop is indented relative to the first line of the loop.
-
The lines inside a method are a sub-part of that method.
-
Methods in a class are indented inside the all-encompassing
class declaration at the top of the file.
(Consider how reading this very paragraph is easier, because of how
the web browser indents items of a lists.)
Also,
- include blank lines between different methods
(since they are separate parts, like separate paragraphs).
-
Don't put blank lines between comments and the code being commented about.
-
Include spaces between words and punctuation, as needed.
For examples of good, readable code,
look at any code in the class notes or in the book.
- κ (kappa):
Confusing/Unclear/unhelpful comments.
An example of unhelpful commenting:
/** The lines of code below are taking in an ID and returning a boolean.
* @param id an ID.
* @return true or false
*/
static boolean isSoldByWeight( String id )
|
A more helpful description:
/** Returns whether or not a grocery-item ID is for an item which is sold by weight.
* @param An ID `number', like "1572935" or "47AGM231". Must be a valid ID.
* @return true if and only if the ID'd item is sold by weight.
*/
static boolean isSoldByWeight( String id )
|
True, it is annoying to repeat the same info twice, but often (not always)
the @return line is also a succinct overall description.
(This is a lack of a single point of control, forcing me
to have the same information cut/pasted in two places.
Really, the program which generates a web page from your
program should use the @return line as the overall description,
if an overall description isn't otherwise provided.)
- τ (tau):
Incomplete testing.
You should have test cases each method you write.
Test cases include actual inputs, and the expected result.
Some functions need more test cases than others.
-
If you include a numeric input, have a test case involving 0
(unless that makes no sense — a pizza might conceivably have
diameter 0 — but not if it's guaranteed to have a 3″ crust.)
-
Also consider fractional and negative inputs, if they make sense.
-
If your function has a String input, then include the empty
string as a test case.
-
If your code contains if statements, have a test case
to test each possible branch of that statement.
- ρ (rho):
Repeated code.
Rather than repeat code, put the common code into a method
and call the method from several places.
You might need to provide
a chunk of varying (“variant”) information,
and your new method encapsulates
that part of the task which is invariant.
The idea is that if you want to modify how the program acts in the future,
you should have to change things in only one place.
- λ (lambda):
Long-winded, verbose code:
No points taken off for this, but observe that…
-
you can condense a statement of the form
if (someCondition) {
return true;
}
else {
return false;
}
|
into the more concise
-
Similarly, if (expr == true) …
can be simplified to if (expr) ….
You can use ! (“not”) to compare against
false:
(expr == false)
is more concisely expressed as (!expr).
-
Similarly, if you use a variable to remember some result, but then only use
that result once (and on the very next line), you can probably just
omit using a variable at all. For example
SomeType someVar = someExpression;
return someVar;
|
can be tightened up to read just
If you prefer the longer versions, that's okay,
though as you get more comfortable with using values
you'll find the shorter versions more understandable.
- μ (mu)
Missing requirement:
There is a function or method requested on the homework which
you didn't provide.
(And/or, you spent a lot of time writing something which
was never actually asked for.)
Please read the handout carefully!
home—info—lects—labs—exams—hws
tutor/PIs—java.lang docs—java.util docs