Padrão "SCS1"

SPIP Coding Standard 1

O SPIP preocupa-se com a qualidade tipográfica das páginas que aos clientes HTTP, e preocupa-se igualmente com a qualidade dos seus próprios ficheiros.

As regras de codificação apoiam-se na recomendação PSR-12 sem a respeitar totalmente; ver detalhes mais abaixo.

Elas estão reunidas num conjunto de regras usáveis com a ferramenta PHP_CodeSniffer na sua extensão spip/coding-standards.

Ficheiros

  • A tag de abertura de um ficheiro PHP DEVE ser <?php. A abertura <? está proscrita.
  • A codificação de caracteres dos ficheiros PHP DEVE ser UTF-8 sem BOM.
  • Todos os ficheiros PHP DEVEM usar unicamente o fim de linha Unix LF (linefeed).
  • Todos os ficheiros PHP DEVEM terminar por uma linha não vazia, terminada por um único LF.
  • A tag de fechamento ?> DEVE ser omitida nos ficheiros que contenham unicamente PHP.

Linhas e indentação

  • NÃO DEVE HAVER limite estrito de largura da linha.
  • O limite flexível para a largura da linha DEVE ser de 120 caracteres.
  • As linhas NÃO DEVEM ultrapassar os 80 caracteres; as linhas mais longas DEVEM ser divididas em varias linhas seguintes de, no máximo, 80 caracteres cada.
  • NÃO DEVE HAVER espaços no final das linhas.
  • Linhas em branco PODEM ser incluídas para melhorar a legibilidade e para indicar blocos de código associados, exceto onde isso for explicitamente proibido.
  • N#AO DEVE HAVER mais de uma instrução por linha.
  • Ao contrário do PSR-12, o código DEVE usar uma tabulação para cada nível de indentação e NÃO DEVE usar espaços para a indentação.

Funções, Classes e Namespaces

  • Nas versões 4.x e anteriores, o SPIP não segue nenhuma PSR de autoloading (ex: PSR-4). Consequentemente, o SCS1 não impõe nenhum formalismo para os namespaces e as classes, incluindo Traits e interfaces.
  • As funções DEVEM ser declaradas em snake_case.
  • A chaveta de abertura DEVE estar na mesma linha do nome da função, e DEVE ter um espaço antes e nenhum espaço depois.
    function minha_funcao() {
    	$minha_variavel = 0;
    
    	// …
    
    	return $meu_resultado;
    }
    

Constantes, Variáveis e propriedades de classe

  • As constantes DEVEM ser declaradas em maiúsculas com um sublinhado como separador e prefixadas com um sublinhado.
    define('_NOVA_CONSTANTE', true);
    
  • As variáveis e os argumentos de funções DEVEM ser declarados em snake_case.
    function minha_super_funcao($um_argumento, $outro_argumento) {
    	…
    }
    
  • as propriedades de classe PODEM ser declaradas em snake_case.
  • As variáveis globais, cujo uso é desaconselhado, são referenciadas por $GLOBALS['xxx'] e não por uma declaraç#ao global $xxx, pos isso permite ter certeza da referência que se está a usar e facilitar a distinção durante a leitura do código.
    if (isset($GLOBALS['meta']['endereco_site'])) {
    	$adresse = $GLOBALS['meta']['endereco_site'];
    }
    

Palavras-chave reservadas, Estruturas de controlo e operadores

  • Todas as palavras-chave e tipos reservados do PHP 12 DEVEM estar em minúsculas.
  • Todos os novos tipos e palavras-chave às futuras versões do PHP DEVEM estar em minúsculas.
  • A forma curta das palavras-chave de "type", quando presentes, DEVEM ser usadas, ou seja bool em vez de boolean, int em vez de integer etc.
  • A chaveta de abertura das estruturas de controle DEVEM estar na mesma linha que o nome da função, e DEVEM ter um espaço anter e nenhum espaço após.
  • Nas expressões PHP, deixar um espaço de cada lado dos operadores binários (+, =, *, and, ...).
    $hipotenusa = sqrt(($a * $a) + ($b * $b));
    
  • Os operadores unários (!, ...) devem estar colados ao parâmetro ao qual se aplicam.
  • a notação curta DEVE ser aplicada às matrizes
    $tableau = [
        'chave' => 'valor',
        ...
    ];
    

Operações em strings

  • Use aspas duplas apenas quando for necessário. Se não tiver uma variável ($var) ou um caracter de controle (\n, \r, \t...) para avaliar na string, use aspas simples.
    $string = "<a href=\"$url\">Link</a>\n";
    $string2 = 'Uma frase simples: ' . $outra_coisa;
    

Autor Ricardo Porto Publié le :

Traductions : français, Português