A negação da negação geralmente atrapalha a leitura:
if(!$userAllowed) {ou seja, se o sistema não tiver acesso, faça x e se ele não não tiver (que é o mesmo que ele ter, mas da um trabalho para ler) faça y. Sei que isso parece simples, principalmente em um código pequeno, mas tudo que diminui a velocidade de leitura deve ser evitado, até mesmo porque em alguns métodos fica difícil não ter um código extenso.
//x
} // aqui estamos negando a negação do if acima...
else {
//y
}
Normalmente quando um if tem um else, é mais claro se não começamos negando. Porque então o else vai ser a negação da negação.
Ou então algo assim:
if(!$accesForbidden) {//a} else {//b}
parece normal, mas da um trabalhinho pra ler. É bem mais fácil ler algo como:
if($hasAccess) {//a} else {//b}
ou no máximo:
apesar de que este segundo caso só acho aceitável quando a variável accessForbiden já existe e tem esse nome justificado em outro contexto.
if($accesForbidden) {//b} else {//a}
Interessante, Como esse exemplo é um caso de controle de acesso, mais simples ainda é abstrair essa situação: if ($this->hasAccess($acl)) {$this->display();} else {$this->accessForbidden();}
ResponderExcluirNesse seu post um exemplo válido seria algo como
if ($this->save()) {//a} else {//b}