Las cláusulas de guarda son un sencillo método que hace que nuestro código más legible. Una buena forma de detectar estos "refactors", es buscar siempre estructuras "if-else" que comprueben una condición para ejecutar el código principal, y en caso de no cumplirse, lanzar un error o una excepción.
Vamos a ver un ejemplo:
function setAge(int age){
if ($age > 0){
$this->age = age;
}else{
throw new NegativeAgeException();
}
}
Este es un caso típico que puede transformarse en una cláusula de guarda y aplicar un refactor Extract Method.
Vamos a ver un ejemplo:
function setAge(int age){
if ($age < 0){
throw new NegativeAgeException();
}
$this->age = age;
}