[UPHPU] Coding Correctness
Jennifer Charrey
jcharrey at gmail.com
Wed Oct 8 13:31:10 MDT 2008
Justin Giboney wrote:
> I went to a job interview last Thursday in which I felt I did well except
> for one question that he asked me. He asked me to create a PHP function that
> takes an input and outputs even if a number is even and odd if a number is
> odd.* Below are the function that I wrote in the interview, and the function
> that I would have liked to have written in the interview. Now here are some
> questions for you:
> 1) is there a big difference in the two functions?
> 2) if you could grade these on completeness, how would you score them?
> 3) what would be your perfect answer?
1) Yes. Differences:
a) The second function fails when a value is passed in as a string, i.e.
'2'.
b) The second function has additional output that was not in the problem
description. It asked for even or odd. You're making an assumption about
what would be "better" but assumptions are often wrong. What if they
just want to put the output of the function in a tiny column, or switch
based on the results?
c) The second function does extra work by doing up to two extra mods
when the number is not even. If it's an integer and it's not even, it's
odd. No need to do two more operations, allow more pathways for bugs
(what if you'd forgotten about the -1 case?), make the code less
readable, etc.
2) The second one is over-complete to the point of missing the specs, as
well as limiting input to integer types only. It also does extra work
and is less readable. Sometimes less is more. Comments are always good
but the most important one would be "you must pass the value with an
integer type for this to work."
3) I liked the first function better, maybe adding a brief comment.
More information about the UPHPU
mailing list