Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Grehgo

Refatorar um trecho curto de código

Recommended Posts

Boa tarde pessoal, tenho dois trechos de código, estou estudando boas práticas de programação e gostaria de saber se alguém tem dicas de como refatorar a ponto de melhorar os trechos de código a seguir.


 

if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true){
	header("Location: http://www.google.com");
	exit();
}elseif(isset($_COOKIE['Loggedin']) && $_COOKIE['Loggedin'] == true){
	header("Location: http://www.google.com");
	exit();
}

 

o outro trecho é esse:

 


class MyUserClass
{
	public function getUserList()
	{
		$dbconn = new DatabaseConnection('localhost','user','password');
		$results = $dbconn->query('select name from user');

		sort($results);

		return $results;
	}
}

 

Se alguém tiver dicas de como deixar isso mais apropriado, de acordo com normas PSR-2 ou algum standard, agradeço o auxílio.


Abraço.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, no método getUserList(), faria o seguinte:

  • Criaria um atributo para setar a DB, assim poderá utilizar em todo lugar  da classe o $this->db.
  • Criaria um método para setar a conexão da DB;
  • Pode dar o return direto com o sort.
  • Usar palavras chaves SQL em maiúsculo.
class MyUserClass
{
	private $db;

	public function __construct() {
    		$this->setDB();
   	}

	private function setDB(){
		$this->db = new DatabaseConnection('localhost','user','password');
	}

	public function getUserList()
	{
		$results = $this->db->query('SELECT name FROM user');
		return sort($results);
	}
}

Agora, nas condições você está redundante, veja:

// isset($_SESSION['loggedin'] é igual $_SESSION['loggedin'] == true, precisa mesmo usar isset?
// então use apenas
if(isset($_SESSION['loggedin'])){
	header("Location: http://www.google.com");
	exit();
}else if(isset($_COOKIE['Loggedin'])){
	header("Location: http://www.google.com");
	exit();
}

// ainda tem código repetido, as duas condições fazem a mesma coisa, certo? Podemos simplificar, veja:
if(isset($_SESSION['loggedin']) || isset($_COOKIE['Loggedin'])){ // caso uma outra seja true
	header("Location: http://www.google.com");
	exit();
}

// Pra melhorar, pode criar um método/função e apenas chamar onde quiser no sistema

Minhas dicas são essas, pode ser que errei em algo... mas é para não ter alterado o funcionamento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.