Try this experiment:
Clear[evenodd];
evenodd[n_Integer] := Brown;
evenodd[n_Integer?Positive] := Orange
evenodd[n_Integer?EvenQ] := Magenta;
evenodd[n_Integer /; Divisible[n, 4]] := Blue;
evenodd[0] := Red;
evenodd /@ Range[-5, 5]
Notice how Blue never shows up, and Magenta never shows up on the positive side. Why? To understand, look at the DownValues:
DownValues@evenodd
which gives you
{HoldPattern[evenodd[0]] :> Red,
HoldPattern[evenodd[n_Integer?Positive]] :> Orange,
HoldPattern[evenodd[n_Integer?EvenQ]] :> Magenta,
HoldPattern[evenodd[n_Integer /; Divisible[n, 4]]] :> Blue,
HoldPattern[evenodd[n_Integer]] :> Brown}
Notice that Mathematica automatically re-ordered the definitions from most specific to most general. But it couldn't distinguish between the conditional rules, so it left them in the order in which they were evaluated.
Try the experiment again after re-ordering the conditional rules.
Clear[evenodd];
evenodd[n_Integer] := Brown;
evenodd[n_Integer?EvenQ] := Magenta;
evenodd[n_Integer?Positive] := Orange
evenodd[n_Integer /; Divisible[n, 4]] := Blue;
evenodd[0] := Red;
evenodd /@ Range[-5, 5]
All of this indicates that care should be taken when trying to define conditional rewrite rules.
Side note, this also shows that you could replace your definition using If with one using a Condition or a PatternTest.