Skip to content

ipti/php-code-patterns

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 

Repository files navigation

php-code-patterns

PHPMD

Reference: PHP MESS DETECTOR RULES

CLEAN CODE RULES

  • BooleanArgumentFlag: Não devem ser passados como parâmetros de uma função, argumentos do tipo boolean com valor default.
  • StaticAccess: Não declarar métodos com acesso estático Method::method()
  • IfStatementAssignment: Não fazer atribuições de valor a variáveis em estruturas condicionais if
  • DuplicatedArrayKey: Não definir um novo valor para uma chave de um array que já possui um valor atribuído.
  • ErrorControlOperator: Não utilizar o operador de erro @
  • MissingImport: Deve importar todas as classes externas através de instruções de uso, as tornando visíveis
  • UndefinedVariable: Não utilizar variáveis que não foram definidas anteriormente.

CODE SIZE RULES

  • CyclomaticComplexity: Manter um limite de 10 pontos de decisão em uma função, para não torná-la muito complexa.
  • NPathComplexity: Manter um limite de 200 resultados possíveis para um único método.
  • ExcessiveMethodLength (70): Manter um limite de 70 linhas de código por método. Caso seja necessário, tente distribuir o método criando métodos auxiliares e removendo possíveis códigos duplicados.
  • ExcessiveClassLength (800): Manter um limite de 800 linhas de código por classe. Caso seja necessário, tente dividí-la em outras classes ou métodos.
  • ExcessiveParameterList (4): Manter um limite de 4 parâmetros por método. Caso seja necessário, tente agrupar os parâmetros.
  • ExcessivePublicCount (30): Manter um llimite de 30 métodos por classe.
  • TooManyFields(15): Manter um limite de 15 campos por classe. Case seja necessário, a classe deve ser reprojetada para ter menos campos, agrupar os campos pode ser uma solução.
  • TooManyMethods (25): Manter um limite de 25 métodos para uma única classe.
  • TooManyPublicMethods (10): Manter um limite de 10 métodos públicos para uma única classe.
  • ExcessiveClassComplexity (50): Manter um limite de 50 pontos de decisão no total para todos os métodos em uma classe.

CONTROVERSIAL RULES

  • CamelCaseClassName: Use camelCase para declarar nome de classes.
  • CamelCasePropertyName: Use camelCase para declarar nome de propriedades de classes.
  • CamelCaseMethodName: Use camelCase para declarar nome de métodos.
  • CamelCaseParameterName: Use camelCase para declarar nome de parâmetros
  • CamelCaseParameterName: Use camelCase para declarar o nome de variáveis.

DESIGN RULES

  • ExitExpression: Não utilizar o método exit() durante a execução do algoritmo
  • EvalExpression: Não utilizar o método eval(), uma vez que pode gerar um risco de segurança.
  • GotoStatement: Não utilizar o método goto, uma vez que dificulta a compreensão do código e prejudica o fluxo de controle da aplicação.
  • NumberOfChildren(15): Manter o máximo de 15 "filhos" por classe. Um número excessivo de filhos para uma classe sugere uma árvore de hierarquia desequilibrada.
  • DepthOfInheritance(6): Manter o máximo de 6 "pais" acima de uma classe. Um número excessivo de pais sugere uma árvore de hierarquia desequilibrada.
  • zCouplingBetweenObjects(13): Manter o máximo de 13 dependências por classe.
  • zDevelopmentCodeFragment: Não manter funções como var_dump() ou print_r() escritas ao longo do código, mesmo que estejam comentadas.
  • EmptyCatchBlock: Não utilizar try-catch vazios, mesmo que o seu uso seja justificado como correção de algum erro no sistema.
  • CountInLoopExpression: Não utilizar as funções count ou sizeof em expressões de loop. Uma vez que pode se tornar uma fonte potencial de muitos bugs.

NAMING RULES

  • LongClassName(max: 40): Declarar classes com nomes de no máximo 40 caracteres.
  • ShortClassName(min: 3): Declarar classes com nomes de no minímo 3 caracteres.
  • LongVariable(max: 20): Declarar variaveis com no máximo 20 caracteres.
  • ShortVariable(min: 3): Declarar variaveis com no mínimo 3 caracteres.
  • ShortMethodName(min: 3): Declarar metodos com nomes com no mínimo 3 caracteres.
  • ConstrutorWithNameAsEnclosingClass: Um método construtor não deve ter o mesmo nome da classe envolvente
  • ConstantNaming: Nomes de constantes de classe/interface devem sempre ser definidos em letras maiúsculas.

UNUSED CODE RULES

  • UnusedPrivateField: Detecta quando um campo privado é declarado e/ou atribuído um valor, mas não é usado.
  • UnusedLocalVariable: Detecta quando uma variável local é declarada e/ou atribuída, mas não é usada.
  • UnusedPrivateMethod: o método privado não utilizado detecta quando um método privado é declarado, mas não é usado.
  • UnusedFormalParameter: evite passar parâmetros para métodos ou construtores e depois não usar esses parâmetros.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published