Return Early - Padrão com PHP
Hoje eu vou falar sobre uma técnica que eu utilizo para desenvolver códigos mais legíveis com o intuíto de facilitar a leitura e o entendimento.
Lets Bora!
Primeiro irei mostrar um exemplo de código que geralmente fizemos.
<?php
// Tenta criar uma conta, recebe E-mail e Senha como parametro, caso de erro é lançada uma exeção.
public function create(string $email, string $senha, string $senhaRepetida): Exception | string
{
if(!empty($email) OR !empty($senha)){
if(str_contains($email, '@') == true){
if(strlen($senha) > 16){
if($senha === $senhaRepetida){
if(!$this->authRepositorio->getAccountByEmail($email)){
if($this->authRepositorio->create($email, $senha)){
return 'Conta Criaca com sucesso!';
}else{
throw new Exception('Não foi possível criar sua conta, tente mais tarde.');
}
}else{
throw new Exception('Já existe uma conta cadastrado com esse e-mail');
}
}else{
throw new Exception('As senhas não estão iguais.');
}
}else{
throw new Exception('Senha muito fraca.');
}
}else{
throw new Exception('E-mail inválido.');
}
}else{
throw new Exception('Preencha o e-mail e senha.');
}
}
Agora vou mostrar como eu faria essa mesma função utilizando a técnica no return early!
<?php
public function create(string $email, string $password, string $passwordRetry): Exception | string
{
if(empty($email) || empty($password)){
throw new Exception('Preencha o e-mail e senha.');
}
if(strlen($password) <= 16){
throw new Exception('Senha muito fraca.');
}
if($password !== $passwordRetry){
throw new Exception('As senhas não estão iguais.');
}
if($this->authRepository->getAccountByEmail($email)){
throw new Exception('Já existe uma conta cadastrado com esse e-mail');
}
if(!$this->authRepository->create($email, $password)){
throw new Exception('Não foi possível criar sua conta, tente mais tarde.');
}
return 'Conta Criaca com sucesso!';
}
Por hoje é isso pessoas!