$maneirasDeMelhorarSeuCodigo


     Aplicando 5S no seu código
2
3
4
PHPDEPEND


PHPCSD               PHPMD




                             5
QA TOOLS
• PHP QA TOOLS - http://phpqatools.org/

• PHPUnit
• PHP_Depend
• PHP Dead Code Detector
• PHP_CodeSniffer
• PHP Mess Detector
Entre outros...


                                          6
Linha Guia




             7
Convenção de Código
• Zend Coding Standards -
  http://framework.zend.com/manual/1.12/en/
  coding-standard.html



• PEAR -
  http://pear.php.net/manual/en/standards.php


                                              8
<?php
  foreach($consulta as $valor):
?>
    <tr>
      <td><?php echo $valor->id; ?></td>
      <td><?php echo $valor->nome; ?></td>
      <td><?php echo $valor->email; ?></td>
    <tr>
<?php
  endforeach;
?>




                                              9
Criado para resolver o problema de escopo
entre bibliotecas.
*Namespace pode conter definições de classes,
constantes e funções, mas não código livre. (A
partir da versão 5.3)
           <?php
             namespace coreControllerHello;

             class World {
                function __construct() {
                  echo "Helloworld";
                }
             }
           ?>
                                                 10
Qual é a ideia?

Core
         DB
        URL
                     11
Paradigma?




• Estude-os (objetos,aspectos,eventos)
• Há projetos?

                                         12
• Gere sua documentação automaticamente
• Gerencie suas tarefas através do seu código




                                                13
14
15
Isso é justificável hoje?
  <?php
  function require_path($path) {
    $root = scandir($path);
    $files = array();
    foreach($root as $value)
    {
       if($value === '.' || $value === '..') {continue;}
          if(is_file("$path/$value")) {
             $pInfo = pathinfo($value);
             if ($pInfo['extension'] == "php") {
                require_once("$path/$value");
                echo "$path/$value<br>";
             }
          } else {
             require_path($path);
          }
    }
  }
  ?>


                                                           16
Como podemos modificar isso?
           scandir($dir)


       __autoload($classname)


               use




                                17
O que é util?


  Refatore




                18
Refatoração
• Maioria das técnicas associadas ao oop!
           Extrair Método (Extract Method)
           Mover Método (Move Method)
           Mover Atributo (Move Field')
           Extrair Classe (Extract Class)
           Encapsular Atributo (Encapsulate Field)
           Renomear Método (Rename Method)
           Subir Método (Pull Up Method)
           Subir Atributo (Pull Up Field)
           Descer Método (Push Down Method)
           Descer Atributo (Push Down Field)
           Extrair Sub-classe (Extract Subclass)
           Extrair Super-classe (Extract Superclass)



                                                       19
Coca-Cola   Café?




                    20
Disciplina




             21
Considerações Finais
DRY(Do not repeat yourself) – (Já Falamos)
KISS(Keep it simple, stupid) – Menos é mais


                  Php.net
                   GUIA




                                              22
Perguntas


            23
Obrigado




           24

5 Maneiras de melhorar seu código PHP

  • 1.
    $maneirasDeMelhorarSeuCodigo Aplicando 5S no seu código
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
    QA TOOLS • PHPQA TOOLS - http://phpqatools.org/ • PHPUnit • PHP_Depend • PHP Dead Code Detector • PHP_CodeSniffer • PHP Mess Detector Entre outros... 6
  • 7.
  • 8.
    Convenção de Código •Zend Coding Standards - http://framework.zend.com/manual/1.12/en/ coding-standard.html • PEAR - http://pear.php.net/manual/en/standards.php 8
  • 9.
    <?php foreach($consultaas $valor): ?> <tr> <td><?php echo $valor->id; ?></td> <td><?php echo $valor->nome; ?></td> <td><?php echo $valor->email; ?></td> <tr> <?php endforeach; ?> 9
  • 10.
    Criado para resolvero problema de escopo entre bibliotecas. *Namespace pode conter definições de classes, constantes e funções, mas não código livre. (A partir da versão 5.3) <?php namespace coreControllerHello; class World { function __construct() { echo "Helloworld"; } } ?> 10
  • 11.
    Qual é aideia? Core DB URL 11
  • 12.
  • 13.
    • Gere suadocumentação automaticamente • Gerencie suas tarefas através do seu código 13
  • 14.
  • 15.
  • 16.
    Isso é justificávelhoje? <?php function require_path($path) { $root = scandir($path); $files = array(); foreach($root as $value) { if($value === '.' || $value === '..') {continue;} if(is_file("$path/$value")) { $pInfo = pathinfo($value); if ($pInfo['extension'] == "php") { require_once("$path/$value"); echo "$path/$value<br>"; } } else { require_path($path); } } } ?> 16
  • 17.
    Como podemos modificarisso? scandir($dir) __autoload($classname) use 17
  • 18.
    O que éutil? Refatore 18
  • 19.
    Refatoração • Maioria dastécnicas associadas ao oop! Extrair Método (Extract Method) Mover Método (Move Method) Mover Atributo (Move Field') Extrair Classe (Extract Class) Encapsular Atributo (Encapsulate Field) Renomear Método (Rename Method) Subir Método (Pull Up Method) Subir Atributo (Pull Up Field) Descer Método (Push Down Method) Descer Atributo (Push Down Field) Extrair Sub-classe (Extract Subclass) Extrair Super-classe (Extract Superclass) 19
  • 20.
    Coca-Cola Café? 20
  • 21.
  • 22.
    Considerações Finais DRY(Do notrepeat yourself) – (Já Falamos) KISS(Keep it simple, stupid) – Menos é mais Php.net GUIA 22
  • 23.
  • 24.