Upload
juliano-dos-santos-da-silva
View
993
Download
5
Embed Size (px)
Citation preview
Padronização de Codificação
PHPJuliano dos Santos da Silva
• Escrever um código organizado, bem estruturado e documentado.
• Melhorar a visibilidade na codificação, facilitando assim futuras manutenções e implementações.
• Assegurar alta qualidade do código e diminuir erros.
• Prover um guia de codificação padrão para toda equipe.
Objetivos
Formato do arquivo PHP
Nomenclaturas
Estilo de codificação
Tópicos
Formato do arquivo PHP
IdentaçãoTAB com tamanho de 4 espaços.
Codificação do arquivoUTF-8.
Tamanho máximo da linha80 caracteres, mas é aceitável até 120 caracteres.
Término de linhaLinhas devem terminar apenas com LineFeeds (LF) – [\n]
Nomenclaturas
Classes - UpperCamelCaseEx: MySql, FileUpload, ReadRss
Variáveis - lowerCamelCaseEx: $objBanco, $fileImage, $readFeed
Propriedades - lowerCamelCaseEx: $this->tableName, $this->fieldId
Nomenclaturas
Funções - lowerCamelCaseEx: setId(), getName(), getFile()
Métodos - lowerCamelCaseEx: $this->getTable(), $this->getFields()
Constantes – UPPERCASE e _Ex: DB_HOST, DB_USER, BASE_URL
Nomenclaturas
Arquivos de Classes – UpperCamelCaseEx: MySql.class.php, FileUpload.class.php
Observação: Sempre o mesmo nome para classe e arquivo.
Nomenclaturas
Recomendações:
• Somente usar abreviações quando for realmente necessário ou se tratar de costume; palavras completas facilitam o entendimento e conseqüentemente melhoram a legibilidade.
• Para decisão do uso de palavra estrangeira ou nacional deve ser levado em consideração, mais uma vez, a questão da facilidade de entendimento; a palavra que passar mais facilmente a idéia desejada deve ser utilizada.
Estilo de Codificação
Demarcação de código PHP- Não usar short-tags. Ex: <? e <?=- Usar tags completas. Ex: <?php e <?php echo
Operadores- Usar espaços entre os operadores. Ex: =, ==, +, -, %, &&, || e demais.
Comentários- Usar // para uma linha de comentário e /* */ para mais de uma linha.
Estilo de Codificação
Inserir código HTML
- Não se utilizar de echo para inserir código HTML. Ex: <?php echo “<img src=‘image.jpg’ alt=‘image’ id=‘img’ />” ?>
-Inserir código HTML entre tags PHP.Ex:?><img src=“image.jpg” alt=“image” id=“img” /><?php
Estilo de Codificação
Strings literais - Se a string não contiver variáveis de substituição, deve-se usar aspas simples.
Ex: $tmpStr = ‘Exemplo de String’;
Strings literais com Apóstrofos – É recomendado o uso de aspas duplas para evitar slashes [\].
Ex: $tmpStr = “SELECT * FROM alunos WHERE nome = ‘João’”;
Estilo de Codificação
Strings com substituição de variáveis - Usar aspas duplas.
Ex: $tmpStr = “Exemplo de String com {$variavel} ”;
Concatenação Strings
Ex: $tmpStr = “Exemplo {$de} String com {$variavel} ”;
Não recomendado:
$tmpStr = ‘Exemplo’ . $de . ” String com $variavel ”;
Estilo de Codificação
Concatenação Strings (continuação) – Quando a string for longa, procurar concatenar com o operador de “.”, alinhando o operador “.” abaixo do operador “=”.
Ex:
$tmpSql = ’SELECT id, nome ‘. ’FROM alunos ‘. ”WHERE nome = ‘João Pereira’ ”;
Estilo de Codificação
if/elseif/else
- O parêntese “()” deve vir logo após a instrução if e elseif.
- Usar espaço simples depois do “(” e antes do “)” da condição no if e no elseif.
- O uso de das chaves “{” e “}” é obrigatório.
Estilo de Codificação
if/elseif/else (continuação)
- A chave “{” virá abaixo da expressão, e a chave “}” virá na linha abaixo da última linha de conteúdo.
- Expressões if, elseif e else devem estar em linhas separadas.
Estilo de Codificação
if/elseif/else (continuação)
If( $intValor == 1 ) {
$intValor++;}elseif( ( $intValor == 2 ) || ( $intValor == 3 ) ) {
$intValor--;}else {
$intValor = $intValor – 2;}
Estilo de Codificação
while/for/foreach
- O parêntese “()” deve vir logo após uma instrução while, for ou foreach.
- Usar espaço simples depois do “(” e antes do “)” da expressão.
- O uso de das chaves “{” e “}” é obrigatório.
Estilo de Codificação
while/for/foreach (continuação)
- A chave “{” virá abaixo da linha da expressão, e a chave “}” virá na linha abaixo da última linha de conteúdo.
Estilo de Codificação
while/for/foreach (continuação)
while( !feof( $hFile ) ){
// instruções}...for( $intCount = 0; $intCount <= 10; $intCount++ ) {
// instruções}...foreach( $arrList as $mixKey => $mixValue ) {
// instruções}
Estilo de Codificação
switch/case
- O parêntese “()” deve vir logo após uma instrução switch.
- Usar espaço simples depois do “(” e antes do “)” da expressão.
- O uso de das chaves “{” e “}” é obrigatório.
Estilo de Codificação
switch/case (continuação)
- A chave “{” virá abaixo da linha da expressão, e a chave “}” virá na linha abaixo da última linha de conteúdo.
- Qualquer código dentro de: case e default, precisa ser identado com quatro espaços, inclusive a palavra reservada: break.
Estilo de Codificação
switch/case (continuação)
switch( $intNivel ){ case 1: // Qualquer conteúdo // precisa ser identado com [Tab|4 espaços]. break; case 2: // Qualquer conteúdo // precisa ser identado com [Tab|4 espaços]. break; default: // Qualquer conteúdo // precisa ser identado com [Tab|4 espaços].}
Estilo de Codificação
try/catch
- O parêntese “()” deve vir logo após uma instrução catch.
- Usar espaço simples depois do “(” e antes do “)” da expressão.
- O uso de das chaves “{” e “}” é obrigatório.
Estilo de Codificação
try/catch (continuação)
- A chave “{” virá abaixo da linha da expressão, e a chave “}” virá na linha abaixo da última linha de conteúdo.
Estilo de Codificação
try/catch (continuação)
try {
$link = @mysql_connect( ’localhost’, ’joaozinho’, ’123456’ );if( !$link ){
throw new Exception();}else{
$status = true;}
}catch( Exception $e ){
$status = false;$e->message( 'Não foi possível conectar-se ao banco de dados.’ );
}
Estilo de Codificação
Inclusão de arquivo de classe
- Utilizar função __autoload que é automaticamente chamada no caso de você tentar usar uma classe/interface que ainda não foi definida.
function __autoload( $className ){
require_once “{$className}.class.php”;}
$obj = new MyClass1();$obj2 = new MyClass2();
Estilo de Codificação
Classes
- As chaves “{” e “}” virão na linha abaixo do nome da classe.
- Toda classe deve ter um bloco de documentação em conformidade ao padrão do PHPDocumentor.
- Só é permitida uma classe por arquivo PHP.
Estilo de Codificação
Variáveis de Classes ou Propriedades
- Devem ser declaradas no topo da classe, antes de qualquer declaração de método.
- Não utilizar o identificador: var (php4).
- Sempre declarar sua visibilidade: private, protected ou public. Preferencialmente não utilizar declaração de variáveis de classes como public para não incentivar o uso de (set/get).
Estilo de Codificação
Métodos
- As chaves “{” e “}” virão na linha abaixo do nome do método.
- Toda método deve ter um bloco de documentação em conformidade ao padrão do PHPDocumentor.
- Sempre declarar sua visibilidade: private, protected ou public.
Estilo de Codificação
Métodos (continuação)
- Método construtor sempre deve ser identificado por __construct().
- Propriedades e métodos de uma classe devem ser referenciados internamente com uso do identificador $this.
- Procurar tratar sempre os erros, lançando as exceções necessárias.
Estilo de Codificação
Exemplo de Classe
<?php/*** [Descrição do arquivo].** [mais informações precisa ter 1 [ENTER] para definir novo parágrafo]** [pode usar quantas linhas forem necessárias]* [linhas logo abaixo como esta, são consideradas mesmo parágrafo]** @package [Nome do pacote de Classes, ou do sistema]* @category [Categoria a que o arquivo pertence]* @name [Apelido para o arquivo]* @author [nome do autor] <[e-mail do autor]>* @copyright [Informações de Direitos de Cópia]* @license [link da licença] [Nome da licença]* @link [link de onde pode ser encontrado esse arquivo]* @version [Versão atual do arquivo]* @since [Arquivo existe desde: Data ou Versao]*/
Estilo de Codificaçãoclass ClasseExemplo{
/*** @access private* @var string*/private $privada = null;/*** @access protected* @var int*/protected $protegida = 0;/*** @var string*/public $publica = null;/*** @static* @var string*/public static $publicaEstatica = null;
Estilo de Codificação/*** Seta o um valor à propriedade Name.* @access public* @param string $pValue Nome Completo* @return void*/public function setName( $pValue ){
// Qualquer conteúdo// precisa ser identado com [Tab|4 espaços].
}
/*** Retorna o valor da propriedade Name.* @access public* @return string*/public function getName(){
// Qualquer conteúdo// precisa ser identado com [Tab|4 espaços].
}}
“A perfeição não é alcançada quando já não há mais nada para adicionar, mas sim, quando já não há mais nada do que se possa retirar.”
(Antonie de Saint-Exupéry)
Pensamento
Zend Framework: Coding Standards for PHP
PEAR Coding Standards
Coding Standards for CakePHP
Walker de Alencar :: Padrões e Metodologias
Wikipedia: CamelCase
Apostilas Folk PHP
API Joomla! 1.5
Referências