This seems wrong. Two examples, one higher (4.1.0) and another lower (2.9.0) than 3.9.0 would both return true. You should only compare the following number if the previous is equal, it should be something like:

if(major > MAJOR)
  return false;

else if(major == MAJOR) {

  if(minor > MINOR)
    return false;

  else if(minor == MINOR) {

    if(bugfix > BUGFIX)
      return false;
  }
}

return true;