MANUAL DE PADRONIZAO DE CODIFICAO PHP CODING STANDARDS
verso 1.0
W7BR Solues e Tecnologia contato@w7br.com
Manual para padronizao de cdigo W7BR 2010 W7BR Solues e Tecnologia Sumrio INTRODUO ................................................................................................................................ 3 Observao ................................................................................................................................ 3 FORMATO DO ARQUIVO PHP ........................................................................................................ 4 Identao ................................................................................................................................... 4 Codificao do Arquivo ............................................................................................................. 4 NOMENCLATURAS ......................................................................................................................... 5 Padro CamelCase ..................................................................................................................... 5 UpperCamelCase ....................................................................................................................... 5 LowerCamelCase ....................................................................................................................... 5 UPPERCASE ................................................................................................................................ 5 ESTILO DE CDIGO (Coding Style) ................................................................................................. 6 Demarcao de Cdigo PHP ...................................................................................................... 6 Strings Literais ........................................................................................................................... 6 Strings Literais com Apstrofos ................................................................................................. 6 Substituio de Variveis e Concatenao de Strings ............................................................... 6 Classes ....................................................................................................................................... 6 Variveis de Classes (Propriedades) .......................................................................................... 7 Funes e/ou Mtodos ............................................................................................................. 8 Estruturas de Controle .............................................................................................................. 8 Array ........................................................................................................................................ 10 Erros ........................................................................................................................................ 10 REFERNCIAS ............................................................................................................................... 11
Manual para padronizao de cdigo W7BR 2010 W7BR Solues e Tecnologia INTRODUO Como escrever um cdigo organizado, bem estruturado e documentado Melhorando visibilidade e facilitando futuras manutenes e implementaes. Um bom padro de codificao importante em qualquer projeto de desenvolvimento, principalmente quando envolve vrios desenvolvedores. Assegurar a Alta Qualidade do cdigo, diminuir bugs. Observao Esse manual baseado no PHP Coding Standards do Walker de Alencar; Alguns modificaes foram realizadas se adequando nossa realidade; Foram acrescentado outros itens que achamos importantes. Todos o resto foi mantido, assim como a formatao mais prxima existente no material base e sua licena.
Manual para padronizao de cdigo W7BR 2010 W7BR Solues e Tecnologia FORMATO DO ARQUIVO PHP Identao Tab com tamanho de 4 espaos. Codificao do Arquivo UTF-8;
Manual para padronizao de cdigo W7BR 2010 W7BR Solues e Tecnologia NOMENCLATURAS Padro CamelCase a denominao em ingls para a prtica de escrever palavras compostas ou frases, onde cada palavra iniciada com Maisculas, e unida sem espaos. um padro largamente utilizado em diversas linguagens de programao, como Java, Ruby e Python, principalmente nas definies de Classes e Objetos. (Fonte: wikipedia.com) Divises: lowerCamelCase ( iPod, iPhone ) e UpperCamelCase ( OpenOffice, StarTrek ) UpperCamelCase Classes O nome da classe dever conter primeiramente o cls que identifica que uma classe, seguido do nome Representativo da classe. O nome Representativo definido sobre os objetivos e atividades que a classe exercer, os mesmo devem seguir o padro UpperCamelCase. Ex.: clsBancoDados; clsEnviarArquivo. LowerCamelCase Variveis $isRoot, $itensCarrinho Propriedades $this->caminhoUpload, $this->nomeCompleto Funes e Mtodos this->CalculaFrete(), $this->GeraMiniatura(), ContaPalavras( $frase ) UPPERCASE Contantes ORM_SERVIDOR, BASE_UPLOAD, URL_API
Manual para padronizao de cdigo W7BR 2010 W7BR Solues e Tecnologia ESTILO DE CDIGO (Coding Style) Demarcao de Cdigo PHP No usar short_tags(<? E <?=) Usar tags completas (<?php e <?php echo ) Strings Literais Se a string no contiver variveis de substituio, deve-se usar aspas simples. $tmpStr = 'Exemplo de String'; Strings Literais com Apstrofos Pode-se usar aspas simples, mas recomendado o uso de aspas duplas para evitar slashes [\] $tmpSql = SELECT id, nome FROM cliente WHERE name='Walker'; Substituio de Variveis e Concatenao de Strings Usar aspas simples. Usar espao antes e depois do operador ".", melhorando assim a visibilidade. $tmpStr = Exemplo . $de . String com . $variavel; Quando concatenar mais de uma string longa, alinhe o operador "." abaixo do operador "=". $tmpSql = 'SELECT id,nome ' . 'FROM cliente ' . WHERE name = Walker' "; Classes Nomear em clsUpperCamelCase. As chaves "{" vir na linha frente do nome da classe e o "}" viro na linha abaixo do nome da Classe. Toda classe deve ter um bloco de documentao em conformidade com o Padro do PHPDocumentor. Qualquer cdigo dentro da classe precisa ser identado com um TAB. S permitida uma classe por arquivo PHP. Manual para padronizao de cdigo W7BR 2010 W7BR Solues e Tecnologia /** * Envia E-mail conectando num servidor SMTP. * * @author Cleyton Ferrari <cleyton@w7br.com> * @copyright 2009 W7Br Solues * @license http://www.w7br.com * @version 1.1 */ class W7br_SMTP { /* Ensinar ao Mr. M como fazer Mgica aqui. */ } Variveis de Classes (Propriedades) Nomear em _lowerCamelCase. Devem ser declaradas no topo da classe, antes de qualquer declarao de mtodos. Sempre declarar sua visibilidade: private, protected ou public. Preferencialmente no utilizar declarao de variveis de classes como public, para incentivar o uso de (set/get) Se a propriedade for a chave primria ou chave estrangeira de uma entidade do banco de dados, devera ser adicionado um _id no final de sua nomenclatura, ex: _chavePrimaria_id; _chaveEstrangeira_id; _campoSimplesBD; /** * Envia E-mail conectando num servidor SMTP. * * @author Cleyton Ferrari <cleyton@w7br.com> * @copyright 2009 W7Br Solues * @license http://www.w7br.com * @version 1.1 */ class W7br_SMTP { /* Ensinar ao Mr. M como fazer Mgica aqui. */ private $_servico_id; function setServico_id ($value) { $this->_servico_id = $value; } function getServico_id(){ return $this->_servico_id; } Manual para padronizao de cdigo W7BR 2010 W7BR Solues e Tecnologia private $_nome; function setNome ($value) { $this->_nome = $value; } function getNome(){ return $this->_nome; } }
Funes e/ou Mtodos Nomear em UpperCamelCase. As chaves "{" vir na linha frente do nome da Funo/Mtodo e o "}" viro na linha abaixo do nome da Funo/Mtodo. Toda Funo/Mtodo deve ter um bloco de documentao em conformidade com o Padro do PHPDocumentor. Qualquer cdigo dentro da Funo/Mtodo precisa ser identado com um TAB. Sempre declarar a visibilidade: private, protect ou public. /** * Conta quantas palavras tem na frase e retorna a quantidade. * @param string $frase texto que ter as palavras contadas * @return int quantidade de palavras que o texto possui */ function contaPalavras( $frase ){ /* Mgica aqui. */ } Estruturas de Controle if / else / elseif A chave "{" vir na linha da declarao da condio e a chave "}" vir na linha abaixo da ltima linha de contedo. Qualquer cdigo entre as chaves "{" e "}" precisa ser identado com um TAB. Sempre dever utilizar as { e } mesmo que a condio tenha somente uma linha. O else e elseif devero ficar logo aps a chave de fechamento } if( ( $root === true ) && ( $totalDinheiro >= 100 ) ){ echo "Voc Rei. Ainda est rico, paga um churrasco?"; Manual para padronizao de cdigo W7BR 2010 W7BR Solues e Tecnologia } elseif( ( $root === true ) && ( $totalDinheiro < 100 ) ){ echo "Voc Rei. Mas est probrinho heim."; } else { echo ", que diaxo voc ?"; } Operador Ternrio ( ?: ) S dever ser usado para uma condio, para mais condies use if/elseif/else Toda a expresso devera ficar somente e uma linha. $a = $root == true ? "Voc Rei." : "Voc no Rei"; while/for/foreach A chave "{" vir na mesma linha da expresso, a chave "}" vir na linha abaixo da ltima linha de contedo. Qualquer cdigo entre as chaves "{" e "}" precisa ser identado com um TAB. while(!feof($hFile)){ // Qualquer contedo // precisa ser identado com [Tab|4 espaos]. } for($intCount = 0; $intCount <= 10; $intCount++){ // Qualquer contedo // precisa ser identado com [Tab|4 espos]. } foreach($arrList as $mixKey => $mixValue){ // Qualquer contedo // precisa ser identado com [Tab|4 espaos]. }
switch/case Sempre dever ter o default A chave "{" vir na linha da expresso, a chave "}" vir na linha abaixo da ltima linha de contedo; Qualquer cdigo entre as chaves "{" e "}" precisa ser identado com um TAB; Qualquer cdigo dentro de: case e default, precisa ser identado com um TAB, inclusive a palavra reservada: break. Manual para padronizao de cdigo W7BR 2010 W7BR Solues e Tecnologia switch($intNivel){ case 1: // Qualquer contedo // precisa ser identado com [Tab|4 espaos]. break; case 2: // Qualquer contedo // precisa ser identado com [Tab|4 espaos]. break; default: // Qualquer contedo // precisa ser identado com [Tab|4 espaos]. } Array Quando os ndices no forem numricos, dever seguir o padro lowerCamelCase $equipe = array( "silasRibas" => "Silas Ribas Martins", "rodrigoAlves" => "Rodrigo Alves" ); Include e Require Usar include_once ou require_once somente Dever conter parnteses na chamada require_once ("SkySoft/SMTP.php"); Erros Devero ser expostos somente em desenvolvimento, aps o desenvolvimento na verso final devero ser usado do error_reporting(0); Usar Excees exaustivamente
Manual para padronizao de cdigo W7BR 2010 W7BR Solues e Tecnologia REFERNCIAS Appendix B. Zend Framework Coding Standard for PHP http://framework.zend.com/manual/en/coding-standard.html PEAR Manual http://pear.php.net/manual/en/standards.classdef.php CamelCase http://pt.wikipedia.org/wiki/CamelCase PHP Coding Standards ( Walker de Alencar ) http://blog.walkeralencar.com/archives/11