Toda linguagem de programação precisa de alguns padrões de codificação, ou seja, precisa de regras para que os códigos redigidos em um arquivo sejam legíveis para outros desenvolvedores. Estes padrões tornam o código mais versátil, limpo, fácil de manter e entre outros aspectos que ajudam em seu ciclo de vida.

Um padrão de codificação é como se fosse um “ISO” de qualidade, ele torna a estrutura do código internacionalmente legível. Bom, assim todos esperam!

Neste artigo vou tratar alguns assuntos importantes que precisam ser levados em conta na hora de escrever códigos em PHP, é claro que nem tudo será abordado neste artigo. Muitos outros assuntos serão abordados em breve nos próximos posts que terão ligações com este artigo sobre codificação.

1 – Code Layout

1.1 – Indentação

É sempre bom usar 4 espaços para cada bloco de instrução.

O PHP não se baseia em indentação como delimitadores de blocos como o Python,
este assunto é até mesmo um pouco irrelevante, mas é um detalhe.
A questão de indentação no PHP é tornar o código mais legível para outros desenvolvedores
e até para você mesmo. Alguns desenvolvedores preferem usar tabs para o espaçamento do código,
mas é preferível usar apenas 4 espaços para cada bloco de instrução.

indentacao3fig 1.1

1.2 – Cabeçalhos de instruções

É sempre bom usar 1 espaço entre a palavra chave e os parênteses para cabeçalhos
de instruções, não de funções ou métodos de classes.
O uso de apenas 1 espaço dentro dos parênteses também é aceito.

cabecalho_instrucoesfig 1.2

e assim por diante.

1.3 – Loops aninhados

É a única ocasião em que variáveis com tamanho igual a 1 são permitidas e até mesmo encorajadas.
Sempre use $i como nome da variável do primeiro índice do laço mais externo, logo após você deve usar as letras que seguem na ordem alfabética.
Tente não usar a letra l “L” na forma minúscula porque ela parece com o algarismo 1.

loops_aninhadosFig 1.3

1.4 – Incluindo chaves

Chaves devem ser sempre incluídas quando estivermos usando blocos if, for, while e etc. Não há
exceções para esta regra, mesmo que as chaves possam ser omitidas.
A chave de abertura deve ser posta uma linha depois da instrução e a chave de fechamento deve ser alinhada com a chave de abertura.
Esquecendo esta regra podemos tornar o código mais difícil de manter no futuro e ainda corremos
riscos de aperecerem bugs muito difíceis de serem achados.

incluindo_chavesFig 1.4

1.5 – Uso de espaçamentos

A melhor receita é um exemplo!

No exemplo a seguir será apresentado a forma correta acompanhada da forma incorreta.

uso_de_espacamentoFig 1.5

1.6 – Expressões

Sempre use parênteses para suprimir ambiguidades.
Usando parênteses força-se uma ordem de avaliação, isto ajuda a poupar tempo de análise.
da precedência de operadores.
As vezes eliminar o operador binário not (!) torna a expressão mais clara de se entender.
Mantenha cada linha simples.

2 – Convenções de Nomes

2.1 – Nomes de variáveis

Nomes de variáveis devem sempre começar com letras minúsculas e com as palavras separadas por
underline “_”.

Os nomes das variáveis no PHP devem ser descritivos e concisos, mantendo sempre um tamanho
de 15 caracteres, isto não é uma regra mas sempre que possível é bom seguir o conselho para
uma questão de claridade do código.

nomes_de_variaveisFig 2.1

2.2 – Nomes de constantes

Nomes de constantes devem conter todos os caracteres em maiúsculo e separando as palavras com
underline “_”, devem seguir as mesmas regras das variáveis. As constantes também podem ser declaradas com a função define($nome, $valor), sendo que nesta função há um terceiro argumento booleano que torna verdadeira a leitura da constante de várias formas, mas isso não é uma boa prática.

leia: http://php.net/define

nomes_de_constantes1Fig 2.2

2.3 – Nomes de funções

Devem seguir as mesmas regras das variáveis e sempre que possível atribuí-la a um verbo, como;

nomes_de_funcoes Fig 2.3

através dos nomes dados as funções é fácil saber o que ela executa ou pode executar.

2.4 – Argumentos de funções

Argumentos de funções são variáveis de contexto local, logo todas as regras que valem para as variáveis valem aqui também.
Se a função possui mais de um argumento eles precisam estar separados por um espaço, tanto na chamada da função como na sua construção. Os nomes de argumentos também ajudam a definir o propósito da função.

argumentos_de_funcoesFig 2.4

2.5 – Classes

Nomes de classes precisam estar no estilo Camel Case, e de preferência estar definida com apenas uma palavra se for conveniente e quando possível.

nomes_de_classesFig 2.5

2.6 – Métodos de classes

Métodos de classes precisam estar no estilo Camel Case, mas pode-se usar o estilo de funções sem nenhum problema.
Mas uma condição deve ser satisfeita, se você começar a escrever métodos de classes com um tipo de estilo então termine com este, por favor não faça uma salada!

metodos_de_classesFig 2.6

3 – Strings

Strings em PHP podem ser usadas com aspas simples ” ou aspas duplas “”.
A diferença entre elas é que o parser irá usar interpolação de variável ou usará os caracteres de escapamento em uma string com aspas duplas, e em uma string com aspas simples todo o valor é mantido como está, então;

stringFig 3

enquanto que atribuindo ao print o mesmo valor mas dentro de aspas simples, isso irá renderizar o mesmo valor sem interpolação.

O que é preciso conscientizar-se desta regra, é que sempre que você for atribuir um valor do tipo string a uma variável e este valor não possuir nenhuma interpolação ou caracteres de escape atribua com aspas simples, isso acaba aliviando o parser e consequentemente ajuda na performance.

Conclusão

Muitas abordagens deste artigo não significam que você deva seguí-las como uma religião, a questão aplicada aqui é global. Você é o desenvolvedor, sua cabeça é o seu guia.

Mas como experiência a minha dica é; “faça o possível para seguí-las”. Isso vale até pra ajudá-lo a entender o código que você mesmo escreveu. Um código bem feito tem mais chances de ser aceito pela comunidade global de desenvolvedores.

Alguns assuntos como; Exceções e Documentação, serão abordados em um outro post mas que tem uma ligação fortíssima com este artigo.

Até um outro post!