Em equipes de desenvolvimento, a disciplina do desenvolvedor é fundamental para o correto procedimento de um projeto. Tão importante quanto seguir uma metodologia de desenvolvimento, é escrever o código fonte de maneira inteligível.
Elaborar um manual com os padrões para desenvolvimento é uma alternativa eficiente para se obter bons resultados, sendo útil tanto para guiar os desenvolvedores da equipe, como para instrução e adequação de novos membros ao time.
Neste artigo, irei apresentar algumas dicas sobre padrões e boas práticas para programação em PHP, baseadas em materiais de renomados profissionais da área, bem como, em minha própria experiência como desenvolvedor.
Bloco de código PHP
Existem várias maneiras de se definir um bloco de código PHP. As duas mais comuns estão apresentadas no exemplo abaixo.

A tag apresentada na linha 5 assegura completa portabilidade. Ou seja, o servidor somente processará o bloco de código delimitado pela short open tag (linha 1) se a diretiva short_open_tag do arquivo de configuração do PHP estiver habilitada.
Nomenclatura
A definição de nomes dos elementos de um programa desempenha papel considerável para o fácil entendimento da lógica da aplicação. Para a nomenclatura de variáveis, dois estilos são largamente utilizados. Veja o exemplo abaixo.

Na variável da linha 3 foi utilizado o estilo conhecido por Camel Caps, ou seja, a letra incial de cada palavra que compõe o nome da variável é maiúscula, com exceção da primeira palavra, sendo esta totalmente escrita com letras minúsculas.
Na linha 6 apresento o modelo que costumo utilizar, onde cada palavra que compõe o nome da variável é separada pelo caracter underscore, sempre com letras minúsculas.
As constantes devem ser escritas totalmente em letras maiúsculas, utilizando o caracter underscore para separação das palavras. As variáveis globais derivam do mesmo princípio, diferenciando-se pelo caracter inicial, um underscore.

O exemplo abaixo ilustra a padronização utilizada para nomenclatura de classes, métodos e funções.

Na linha 3 é definida a classe "Estados_Brasileiros". Atente para a formação do nome, onde cada palavra é inciada por uma letra maiúscula, separadas pelo underscore.
Ao atribuir nome a um método ou função procura-se informar de maneira sucinta sua funcionalidade, devendo-se tomar o mesmo cuidado aos nomes dados aos seus parâmetros. O padrão para a escrita dos nomes deve seguir o mesmo princípio utilizado para variáveis.
Trabalhando com Strings
Para tratamento de strings, o PHP possui as seguintes alternativas:

Na linha 6, será exibida a mensagem após a substituição das variáveis por seus respectivos valores, isto porque foram utilizadas aspas duplas.
Já na linha 7 será impresso exatamente o texto contido entre as aspas simples, ou seja, não haverá a substituição das variáveis.
Na linha 8, o resultado será o mesmo da linha 6, pois foi utilizada a concatenação das strings com as variáveis.
Chaves, parênteses e espaçamento entre tokens
Existem duas questões principais relacionadas às chaves: a obrigatoriedade da utilização e seu posicionamento. Como nem sempre a linguagem obriga a utilização de chaves, é ideal que sejam aplicadas sempre que for permitido.
Muitos profissionais preferem utilizar a chave de abertura de bloco logo após sua respectiva instrução. Ao meu ver, utilizar uma linha exclusivamente para as chaves de abertura e fechamento de um bloco facilita a interpretação do escopo do mesmo, devido as chaves poderem estar sempre indentadas alinhadamente.

Na imagem acima, os parênteses foram utilizados para passagem de parâmetros a funções, instruções de repetição e instruções condicionais. Como pôde ser observado, não existem espaços após a abertura e antes do fechamento dos parênteses, ou seja, somente foram inseridos espaços após os separadores dos parâmetros. Espaços antes do parêntese de abertura devem ser evitados quando se tratar de funções.
Nas linhas 3, 4, 6, 10, 11 e 15, temos outros exemplos da utilização de espaços em branco entre os tokens da linguagem, o que facilita a leitura e entendimento de operações matemáticas e lógicas.
Indentação
A indentação é essencial para se ter um código fonte de fácil leitura e rápido entendimento. O ideal é a utilização de indentações compostas por 4 espaços.

Muitos profissionais desaconselham a utilização da tecla TAB para a indentação, devido às várias interpretações possiveis por parte de editores de código, ou seja, alguns editores interpretam um TAB como sendo 4 espaços, outros como sendo 8 espaços. Entretanto, o tamanho de um arquivo indentado com espaços tende a ser maior em relação a um arquivo indentado com TAB.
Comentários e documentação
Sem dúvida, os comentários contidos no código fonte juntamente com a documentação do software proporcionam uma das maneiras mais rápidas de o programador tomar conhecimento sobre o funcionamento de um trecho do fonte, podendo, inclusive, fornecer uma visão macro das operações realizadas pelo programa.
Existem vários tipos de comentários que podem ser utilizados em fontes PHP, conforme illustrado abaixo.

É ideal que todos os códigos fonte sejam comentados e tenham suas documentações geradas. Para faciltiar esta tarefa, existem programas que geram automaticamente a documentação, baseadas em blocos de comentário específicos, como os apresentados da linha 2 até a linha 11 e da linha 21 até 25.
Um detalhamento mais aprofundado sobre ferramentas de geração de documentação, pode ser encontrado neste artigo.
Nas linhas 14, 17, 18 e 19 temos exemplos da utilização de comentários não tratados pelas ferramentas de documentação, que pode abranger uma linha (linha 14) ou um bloco de linhas (linhas 17, 18 e 19), e geralmente são utilizados para organização e explanações sobre o código fonte.
Adotar boas práticas de programação e estabelecer padrões para o desenvolvimento de sistemas contribui para o aumento de produtividade e qualidade do software.
Outras técnicas podem e devem ser aplicadas em paralelo, justamente por se tratar de um meio influenciado por inúmeros fatores, cujos reflexos estão diretamente relacionados os produto final. Fica claro, então, que a disciplina é a chave para o sucesso.
Jose Carlos Schmidt
Alexandre
Por clareza eu sempre coloco espaço nas chamadas de funções. Por Exemplo na instrução "if (pertence($escolha_jogado[$idx], $conjunto))", eu faria "if( pertence( $escolha_jogado[ $idx ], $conjunto ) )".
Qual o motivo de vc citar que não deve ter espaços antes de funções?
Tiago Vailati
Olá José Carlos,
Com certeza sua dúvida será a mesma de inúmeros outros leitores, pois a questão do espaçamento entre funções, tokens e outros elementos de uma linguagem de programação é muito abrangente, e como não existem regras para a "melhor maneira de se programar", cada um tem suas preferências.
Tenho por costume evitar a utilização de espaços entre o nome de uma função e os parêntesis da mesma justamente por motivos de clareza. A meu ver, uma função, geralemente, será substituída por um valor, logo, quanto mais esta representar um elemento, mais claro ficará para o entendimento.
Vale ressaltar que o importante é se definir um padrão, e trabalhar para que este seja seguido.
Abraço!
Giovani Magnaguagno
Ótima refêrencia para a 'gramática' na programação! abraço
Marco Túlio Vargas Warlet
Oi Tiago !
Obrigado pelo artigo.
um abraço
Túlio
Danilo Faustinoni Cabello
Olá Tiago, também acho interessante citar no caso do echo por exemplo, podemos usar:
echo "O aluno {$nome_aluno} tem {$idade_aluno} anos.";
o que em editores que não colorem variáveis dentro dos echos(sem serem as concatenadas) é uma boa pedida pra chamar atenção do programador
já nos ifs, quando se tem um if muito grande, também tenho costume de colocar um comentário na chave de fechamento:
if (condicao)
{
... (codigo muito grande)
} // condicao
acho que isso ajuda ainda mais a gente descobrir de onde vem aquela chave
o artigo está ótimo, abraçoo
Marcelo Rodrigues
Só vale lembrar que a comunidade PHP hoje tem uma padronização estabelecida pela PEAR, mas voltado aos pacotes escritos para serem disponibilizados no repositório do PHP, mas que vem sendo largamente adotada, muito semelhante aos padrões utilizados pelo JAVADOC. Particularmente, prefiro utilizar esta regra, que difere apenas do artigo em relação a nomenclatura das classes e seus metodos, onde é também utilizado o conceito Camel Caps. Ex: Class minhaClasse ou ainda $objeto->chamadaParaMetodo(). Apenas uma observação. No PHP Brasil inclusive tem um artigo falando sobre estes padrões. Parabéns, belo artigo.
juarez alencar
Olá pessoal, boa materia publicada pelo cara colega Tiago Alexandre, já venho me interessando por esse assunto a um bom tempo. Diante do que já li e vi no mundo da programação venho a concordar com nosso outro colega Marcelo Rodrigues, poia realmente a padronização do código adotado pela PEAR é fantástica e como também programo em JAVA fica perfeito. Abraços.
Davidson Fellipe da Silva
Ótimo artigo indiquei até para a turma que esta iniciando em PHP lá no grupo de web de lá da faculdade...
Parabéns
Rafael Marques Weiss
Concordo com o usuário logo acima, utlizo para classe padrão PEAR, camel caps, tanto para o nome da classe como para seus métodos,somente para as variáveis utilizo underscore, e na minha opnião as chaves não devem ganhar uma linha inteira, perde-se espaço, e embaralha o código...
Tiago Dias Batista
Muito bom Tiago.
Não somente boas práticas na hora de mexer no código mas também boas práticas de orgarnização dos arquivos e criação do bd poderíam ser abordados se os mesmos não ficassem fora do escopo dos teus artigos.
valeu.
Juliano dos Santos da Silva
Ae Thiago tudu blz Velho continue assim Brother pq gente igual eu tem de monte por ai.. rsr Quis diser NooB da vida xD Tipo caso você crie um artigo que eu adoraria vc por gentileza poderia abordar os fatos para que e quando usar ( {}, [], (), "", '' ) Obrigado é pq de vez em sempre eu me confundo e não consigo escrever o código corretamente VLw brother tipo se vc quiser me mandar um email eu agradeceria xD msn: kcd_cs@hotmail.com Té e desejo que você fassa muitus artigos ainda ByeBye
CÁSSIUS PAIM
Um ótimo livro sobre boas práticas de programação é o livro Code Complete. É um livro da microsoft mas serve para qualquer linguagem.
2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.