====================================== DESENVOLVIMENTO - CODING STANDARDS ====================================== - Tags de PHP: ============== Sempre utilizar <?php .... ?> ao invés de <? ...... ?> Não utilize <script language="PHP" ... ?> - Identação: ============ Identação padrão utilizando 4 caracteres. Configurar o editor para substituir o caracter TAB por espaços. Para configurar o vim/vi: set expandtab set shiftwidth=4 set tabstop=4 JEdit: Global Options->Editing Tab width: 4 Ident width: 4 Soft tabs - Nome de Constantes: ===================== O nome de constantes devem ser identificados com todas as letras maiúsculas. Utilize _ para separar palavras. Exemplo: $MIOLO->.... $DB_ACAO (onde DB identifica a classe) - Nome de Variáves: =================== O nome de variáveis devem ser identificados com letra minúscula. Utilize _ para separar palavras. Exemplo: $var1 = "Valor"; $variavel_1 = "Valor1"; - Estruturas de Controle: ========================= Iniciar o bloco de comandos com '{' na linha após o teste condicional. Utilizar chaves mesmo quando existir apenas uma instrução. No caso de teste composto com || e/ou && ... utilizar parênteses para separar os blocos e outro para delimitar todo o conjunto. Deixar um espaço entre o comando de condicional e o bloco de teste. if ( (condição1) || (condição2) ) { ação1; } elseif ( (condição3) && (condição4) ) { ação2; ação3; } else { ação4; } switch ( condição ) { case 1: ação1; break; case 2: ação2; break; default: ação3; break; } - Chamada de Funções: ===================== Uma chamada: $var = funcao($param1, $param2, $param3); Bloco de chamada de funções (observe o alinhamento): $var1 = foo($bar); $variavel2 = foo($rin); - Definição de Funções: ======================= Iniciar o bloco de código (chaves) na segunda linha. O nome da função deve iniciar com letra maiúscula. function UmaFunction($arg1, $arg2 = '') { if ( condição ) { código; } return $val; } function connect(&$dsn, $persistent = false) { if ( is_array($dsn) ) { $dsninfo = &$dsn; } else { $dsninfo = DB::ParseDSN($dsn); } if ( (! $dsninfo) || (! $dsninfo['phptype']) ) { return $this->RaiseError(); } return true; } - Composição de variável sql ============================ As cláusulas select, from, where, and, group, ... ficam alinhadas à direita, e, conseqüentemente, as identificações de arquivos, campos,... ficam alinhados à esquerda. As condições da cláusula where também devem ter os '=' alinhados de forma que as condições fiquema alinhados à esquerda $sql = " select distinct C.campo1, C.campo2, c.campo3" . " d.campo1, " . " count(*) " . " from tabela1 A, " . " tabela2 B, " . " tabela3 C, " . " tabela4 D " . " where (A.campo1 = $var1) " . " and (B.cmp3 = '$var2') " . " and (A.campo2 = C.campo1) " . " and (A.cmp4 = D.campo1) " . " and (D.cmp3 = B.cmp1) " . " group by C.campo1, " . " C.cmp2 " ; - Comentários: ============== // para uma linha // // para uma linha // // // esta forma é // similar à anterior // /* * outra forma * para mais de uma linha * */ - Inclusão de Arquivos: ======================= Utilize include_once() e require_once() ao invés de include() e require() - Cabeçalho dos Arquivos: ========================= // +--------------------------------------------------------------------+ // | Projeto - Projeto Development Team - UNIVATES Centro Universitário | // +--------------------------------------------------------------------+ // | CopyLeft (L) 2002 UNIVATES, Lajeado/RS - Brasil | // +--------------------------------------------------------------------+ // | Licensed under GPL: see COPYING.TXT or FSF at www.fsf.org for | // | further details | // | | // | Site: http://projeto.codigolivre.org.br | // | E-mail: autor@univates.br | // | | // +--------------------------------------------------------------------+ // | Abstract: Objetivo deste arquivo... | // | | // | Created: aaaa/mm/dd Nome do autor1 | // | Nome do autor2 | // | | // | Id: $Id: CodingStandards.txt,v 1.2 2005/04/03 15:51:42 ematos Exp $ // +--------------------------------------------------------------------+ Ambiente do MIOLO ================= Os programas são criados obedecendo à seguinte estrutura de diretórios: | +-modules | +-Programa | +-handlers (manipuladores) | +-db (classes Base de Dados) | +-forms (classes formulários) | +-sql (diretório que contém o sql de criação/alteração das bases) | +-doc (documentação) | +-etc (demais arquivos) - Codificação dos Arquivos: =========================== O arquivo principal dos sistemas deve ser main.inc, que fica localizado no diretório handlers do módulo.