Вы находитесь на странице: 1из 11

MANUAL DE PADRONIZAO DE CODIFICAO v0.

MANUAL DE PADRONIZAO DE CODIFICAO PHP CODING STANDARDS


verso 0.1

SkySoft - Silas Ribas Martins


silasrm@gmail.com

Walker de Alencar Oliverira


contato@walkeralencar.com

Este contedo est sob licena Creative Commons: BY-NC-SA. Reporte falhas e d sugestes, toda ajuda ser devidamente referenciada.

13/06/09 - SkySoft Silas Ribas Martins

MANUAL DE PADRONIZAO DE CODIFICAO v0.1

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.

13/06/09 - SkySoft Silas Ribas Martins

MANUAL DE PADRONIZAO DE CODIFICAO v0.1

FORMATO DO ARQUIVO PHP


Identao Tab com tamanho de 4 espaos. Codificao do Arquivo UTF-8; Formato Unix ( final de linha em (LF) - [\n] )

13/06/09 - SkySoft Silas Ribas Martins

MANUAL DE PADRONIZAO DE CODIFICAO v0.1

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 nome do Autor ( dever ser curto, no composto e no dever conter caracteres especiais ) seguido do nome Representativo da classe, sendo agrupados usando o "_" ( underscore ). O nome Representativo definido sobre os objetivos e atividades que a classe exercer, os mesmo devem seguir o padro UpperCamelCase.
Skysoft_EmailSmtp, Skysoft_Upload

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

13/06/09 - SkySoft Silas Ribas Martins

MANUAL DE PADRONIZAO DE CODIFICAO v0.1

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 duplas. 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 UpperCamelCase. As chaves "{" e "}" 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 quatro espaos. S permitida uma classe por arquivo PHP.
/** * Envia E-mail conectando num servidor SMTP. * * @author * @copyright Silas Ribas <silas@skysoft.com.br> 2009 SkySoft Brasil

13/06/09 - SkySoft Silas Ribas Martins

MANUAL DE PADRONIZAO DE CODIFICAO v0.1


* @license ry License 1.0 * @version * @category * @package */ class SkySoft_SMTP { /* Ensinar ao Mr. M como fazer Mgica aqui. */ } 1.1 MAIL SkySoft_SMTP http://www.skysoft.com.br/licenca/SSLL1.0.txt

6
SkySoft Libra

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) Funes e/ou Mtodos Nomear em lowerCamelCase. As chaves "{" e "}" 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 quatro espaos. Sempre declarar a visibilidade: private, protect ou public. Na chamada, se a quatidade de parmetros for maior que 4, ou se os parmetros forem longos, dever quebrar em 1 parmetro por linha e a virgula dever est alinhada com (.

/** * Conta quantas palavras tem na frase e retorna a quantidade. * * @author * @copyright * @license ry License 1.0 Silas Ribas <silas@skysoft.com.br> 2009 SkySoft Brasil http://www.skysoft.com.br/licenca/SSLL1.0.txt SkySoft Libra

13/06/09 - SkySoft Silas Ribas Martins

MANUAL DE PADRONIZAO DE CODIFICAO v0.1


* @param * @return */ function contaPalavras( $frase ) { /* Mgica aqui. */ } string $frase texto que ter as palavras contadas int quantidade de palavras que o texto possui

criaFigura( $comprimento , $altura , $corFundo , $corFigura , $borda );

Estruturas de Controle if / else / elseif Usar espao simples depois do "(" e antes do ")" da condiao no IF e no ELSEIF A chave "{" vir na linha abaixo da condio e a chave "}" vir na linha abaixo da ltima linha de contedo. Qualquer cdigo entre as chaves "{" e "}" precisa ser identado com quatro espaos. Se existe duas ou mais condies, ar condies devero est uma por linha, iniciando a linha, da segunda condio em diante, com o comparador lgico seguido da condio, entre parnteses.
if( ( $root === true ) && ( $totalDinheiro >= 100 ) ) { echo "Voc Rei. Ainda est rico, paga um churrasco?"; } elseif( ( $root === true ) && ( $totalDinheiro < 100 ) ) { echo "Voc Rei. Mas est probrinho heim."; } else { echo ", que diaxo voc ?"; 13/06/09 - SkySoft Silas Ribas Martins

MANUAL DE PADRONIZAO DE CODIFICAO v0.1 }

Operador Ternrio ( ?: ) Dever sempre ser usado fora de qualquer bloco de contedo Os resultados devem est uma linha abaixo da condio. S dever ser usado para uma condio, para mais condies use if/elseif/else
$a = $root == true ? "Voc Rei." : "Voc no Rei";

while/for/foreach Usar espao simples depois do "(" e antes do ")" da expresso. A chave "{" vir na linha abaixo da expresso, a chave "}" vir na linha abaixo da ltima linha de contedo. Qualquer cdigo entre as chaves "{" e "}" precisa ser identado com quatro espaos.
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 Usar espao simples depois do "(" e antes do ")" Sempre dever ter o default A chave "{" vir na linha abaixo da Expresso, a chave "}" vir na linha abaixo da ltima linha de contedo
13/06/09 - SkySoft Silas Ribas Martins

MANUAL DE PADRONIZAO DE CODIFICAO v0.1

Qualquer cdigo entre as chaves "{" e "}" precisa ser identado com quatro espaos Qualquer cdigo dentro de: case e default, precisa ser identado com quatro espaos, inclusive a palavra reservada: break.
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 No dever conter parnteses na chamada
require_once "SkySoft/SMTP.php";

Erros Devero ser expostos somente em desenvolvimento Usar Excees exaustivamente

13/06/09 - SkySoft Silas Ribas Martins

MANUAL DE PADRONIZAO DE CODIFICAO v0.1

10

LICENA
Este contedo est sob a licena Creative Commons: BY-NC-SA. Sendo permitido: copiar, distribuir, exibir e executar a obra. criar obras derivadas. Sob as seguintes condies: Atribuio. Voc deve dar crdito ao autor original, da forma especificada pelo autor ou licenciante. Uso No-Comercial. Voc no pode utilizar esta obra com finalidades comerciais. Compartilhamento pela mesma Licena. Se voc alterar, transformar, ou criar outra obra com base nesta, voc somente poder distribuir a obra resultante sob uma licena idntica a esta. Para cada novo uso ou distribuio, voc deve deixar claro para outros os termos da licena desta obra. Qualquer uma destas condies pode ser renunciada, desde que Voc obtenha permisso do autor. Nada nesta licena prejudica ou restringe os direitos morais do autor. Anexo: Ao adotar este padro em alguma instituio informar ao autor atravs do e-mail: walkeralencar@gmail.com ou contato@walkeralencar.com, para ser referenciado no site, isso engrandece o trabalho j realizado e incentiva continuidade de outros mais. Favor informar tambm Silas Ribas via silasrm@gmail.com

13/06/09 - SkySoft Silas Ribas Martins

MANUAL DE PADRONIZAO DE CODIFICAO v0.1

11

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

13/06/09 - SkySoft Silas Ribas Martins

Вам также может понравиться