Você está na página 1de 9

13/12/2023, 10:54 PHP - Código limpo em PHP

 ‫ﱟ‬ 落  練 
INSTALAÇÃO ARTIGOS CURSOS EBOOKS DOWNLOADS LOJA

ARTIGOS

Código limpo em PHP


Vamos conhecer exemplos de boas práticas para código limpo em PHP

Código limpo
Fonte

As dicas deste tutorial não são regras regras de como produzir código-fonte, são
apenas boas práticas. Elas apontam a direção para produzir softwares em PHP ,
que sejam legíveis, reusáveis e refatoráveis. Você não precisa seguir a risca todas as
dicas que serão demonstradas, elas são apenas diretrizes nada mais.

A maioria dos exemplos nesse tutorial funcionam com apenas com PHP 7.1 ou
superior.

Variáveis

Os nomes das variáveis devem ter significado, e que possam ser pronunciados.

Evitar

https://php.com.br/42?codigo-limpo-em-php 1/9
13/12/2023, 10:54 PHP - Código limpo em PHP

1. $ymdstr = $momento->format('y-m-d');

Ideal

1. $dataAtual = $momento->format('y-m-d');

Usar o mesmo vocabulário para o mesmo tipo de variável

Evitar

1. getUserInfo();
2. getUserData();
3. getUserRecord();
4. getUserProfile();

Ideal

1. getUser();

Usar nomes procuráveis

Desenvolvedores de software vão ler mais código-fonte do que jamais irão


escrever. Por isso é importante escrever o código de maneira que, seja legível e
pesquisável. Ao não dar nomes não significativos para variáveis, os leitores do
código-fonte são prejudicados.

De nomes pesquisáveis para suas variáveis.

Evitar

1. // Para que serve o 448?


2. $resultado = $serializer->serialize($data, 448);

Ideal

1. $json = $serializer->serialize($data, JSON_UNESCAPED_SLASHES |


JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);

Evitar

1. // Para que serve esse 4?


2. if ($user->access & 4)
3. {
4. // code...
5. }

Ideal

https://php.com.br/42?codigo-limpo-em-php 2/9
13/12/2023, 10:54 PHP - Código limpo em PHP

1. class User
2. {
3. const ACCESS_READ = 1;
4. const ACCESS_CREATE = 2;
5. const ACCESS_UPDATE = 4;
6. const ACCESS_DELETE = 8;
7. }
8.
9. if ($user->access & User::ACCESS_UPDATE)
10. {
11. // code...
12. }

Retorne cedo, evite aninhamentos

Muitas estruturas de controle (ex: if-else) tornam o código-fonte difícil de ler.


Explícito é melhor que implícito.

Evitar

1. function lojaAberta($dia): bool


2. {
3. if ($dia)
4. {
5. if (is_string($dia))
6. {
7. $dia = strtolower($dia);

8.
9. if ($dia === 'sexta')
10. {
11. return true;
12. }
13. elseif ($dia === 'sábado')
14. {
15. return true;

16. }
17. elseif ($dia === 'domingo')
18. {
19. return true;
20. }
21. else
22. {
23. return false;
24. }
25. }
26. else
27. {
28. return false;
29. }
30. }
31. else
32. {
33. return false;
34. }
35. }

Ideal

https://php.com.br/42?codigo-limpo-em-php 3/9
13/12/2023, 10:54 PHP - Código limpo em PHP

1. function lojaAberta($dia): bool


2. {
3. if (empty($dia))
4. {
5. return false;
6. }
7.
8. $openingDays = ['friday', 'saturday', 'sunday'];
9. $testarTipoVariavel = true;
10.
11. return in_array(strtolower($dia), $openingDays, $testarTipoVariabel);
12. }

Evite mapeamento mental

Não force o leitor a traduzir o significado das variáveis do seu código, sempre use
nomes explícitos.

Evitar

1. $l = ['Porto Alegre', 'São Paulo', 'Los Angeles'];


2.
3. for ($i = 0; $i < count($l); $i++)
4. {
5. $li = $l[$i];
6. minhaFuncao();
7. minhaOutraFuncao();

8. // ...
9. // ...
10. // ...
11. // O que $li significa mesmo?
12. despachar($li);
13. }

Ideal

1. $locais = ['Porto Alegre', 'São Paulo', 'Los Angeles'];


2.
3. foreach ($locais as $local)
4. {
5. minhaFuncao();
6. minhaOutraFuncao();
7. // ...
8. // ...
9. // ...
10. despachar($local);
11. }

https://php.com.br/42?codigo-limpo-em-php 4/9
13/12/2023, 10:54 PHP - Código limpo em PHP

Não adicione contexto desnecessário

Se o nome da sua classe/objeto diz algo, não repita isso no nome das variáveis.

Evitar

1. class Carro
2. {
3. public $fabricanteCarro;
4. public $modeloCarro;
5. public $corCarro;

6. }

Ideal

1. class Carro
2. {
3. public $fabricante;
4. public $modelo;
5. public $cor;
6. }

Use argumentos padrão em vez de condicionais

Evitar

Este código está ruim, pois o $nomeCervejaria pode ser NULL .

1. function criarCervejaria($nomeCervejaria = 'Cervejaria Hipster Co.'): void


2. {
3. // ...
4. }

Meio termo

Este código é mais legível que o anterior, mas ainda assim, é melhor controlar o
valor da variável.

1. function criarCervejaria($nome = null): void


2. {
3. $nomeCervejaria = $nome ?: 'Cervejaria Hipster Co.';
4. // ...
5. }

Ideal

Você pode usar declarações de tipos e ter certeza que $nomeCervejaria não será
NULL .

1. function criarCervejaria(string $nomeCervejaria = 'Hipster Brew Co.'): void


2. {
3. // ...
4. }

Use poucos argumentos de função

Limitar a quantidade de parâmetros de função é muito importante, porque isso


torna o teste de função mais fácil. Ter mais de três leva a uma explosão
combinatória onde você precisa testar toneladas de casos diferentes com cada
argumento separado.

https://php.com.br/42?codigo-limpo-em-php 5/9
13/12/2023, 10:54 PHP - Código limpo em PHP

Não ter argumentos é o caso ideal, um ou dois é aceitável, e 3 deve ser evitado.
Normalmente, se você tem mais de dois argumentos, então sua função está
tentando fazer coisas demais. Quando não é o caso, um objeto de nível superior
será suficiente como argumento.

Evitar

1. function criarmenu(string $titulo, string $corpo, string $textoBotao, bool


$botaoCancelar): void
2. {
3. // ...
4. }

Ideal

1. class MenuConfig
2. {
3. public $titulo;
4. public $corpo;
5. public $textoBotao;
6. public $botaoCancelar = false;

7. }
8.
9. $config = new MenuConfig();
10. $config->titulo = 'Foo';
11. $config->corpo = 'Bar';
12. $config->textoBotao = 'Baz';
13. $config->botaoCancelar = true;
14.
15. function criarMenu(MenuConfig $config): void
16. {
17. // ...
18. }

Funções devem fazer apenas uma coisa

Esta é a regra mais importante na Engenharia de Software. Quando funções fazem


mais de uma coisa, elas começam a ficar difíceis entender e testar. Sempre que
possível isole as funções, de maneira que, elas executem apenas uma ação.

Evitar

1. function emailClients(array $clients): void


2. {
3. foreach ($clients as $client)
4. {
5. $clientRecord = $db->find($client);
6.
7. if ($clientRecord->isActive())
8. {
9. email($client);
10. }

11. }
12. }

Ideal

https://php.com.br/42?codigo-limpo-em-php 6/9
13/12/2023, 10:54 PHP - Código limpo em PHP

1. function emailClients(array $clients): void


2. {
3. $activeClients = activeClients($clients);
4. array_walk($activeClients, 'email');
5. }
6.
7. function activeClients(array $clients): array
8. {
9. return array_filter($clients, 'isClientActive');
10. }
11.
12. function isClientActive(int $client): bool
13. {
14. $clientRecord = $db->find($client);
15. return $clientRecord->isActive();
16. }

Os nomes das funções deve indicar o que elas fazem

Evitar

1. class Email
2. {
3. //...
4.
5. public function handle(): void
6. {
7. mail($this->to, $this->subject, $this->body);
8. }
9. }
10.
11. $mensagem = new Email(...);
12. // O que é isso? Um manipulador para a mensagem? Estamos escrevendo um
arquivo?
13. $mensagem->handle();

Ideal

1. class Email
2. {
3. //...
4.
5. public function enviar(): void
6. {
7. mail($this->to, $this->subject, $this->body);
8. }
9. }
10.
11. $mensagem = new Email(...);
12. // Claro e objetivo
13. $mensagem->enviar();

Não use flags como parâmetros de função

Flags indicam que a sua função faz mais do que uma coisa. Funções devem fazer
apenas uma coisa. Divida as suas funções se elas seguem dois caminhos baseados
em uma flag.

Evitar

https://php.com.br/42?codigo-limpo-em-php 7/9
13/12/2023, 10:54 PHP - Código limpo em PHP

1. function criarArquivo(string $nome, bool $temporario = false): void


2. {
3. if ($temporario)
4. {

5. touch('./temp/'.$nome);
6. }
7. else
8. {
9. touch($nome);
10. }
11. }

Ideal

1. function criarArquivo(string $nome): void


2. {
3. touch($nome);
4. }
5.
6. function criarArquivoTemporario(string $nome): void
7. {
8. touch('./temp/'.$nome);
9. }

COMENTE SOBRE

ALSO ON PHPBR

Testes unitários com a Filtrando o input de Instalação do PHP em Verificação de senh


PHPUnit dados Windows com password_has

6 dias atrás um mês atrás 8 dias atrás 2 meses atrás


Como aumentar a confiança Conheça a função Veja como instalar e Uma forma mais segu
no software, mesmo sob filter_input configurar o PHP no verificar senhas
constantes mudanças Windows com o Xampp

https://php.com.br/42?codigo-limpo-em-php 8/9
13/12/2023, 10:54 PHP - Código limpo em PHP

1 Comentário 
1 Entrar

G Participe da discussão...

FAZER LOGIN COM OU REGISTRE-SE NO DISQUS ?

Nome

 1 Compartilhar Mais votados Mais recentes Mais antigos

Thalles Ramon Rosa − ⚑


4 anos atrás

Uma prática legal, também, é: ao invés de definir o nome da classe como string, por exemplo, no callback
["NomeClasse"], seria melhor usar [NomeClasse::class]. Isso ajuda a ide refatorar os nomes.

3 0 Responder • Compartilhar ›

Inscreva-se Privacidade Política de Proteção de Dados

Instalação .com.br
Artigos
Cursos
 
EBooks
Downloads © 2018 - Todos os direitos reservados
Loja Política de Privacidade

Contato

https://php.com.br/42?codigo-limpo-em-php 9/9

Você também pode gostar