Skip to content

Corrige code-smells da classe `LabelShortcode` (#28)

Descrição

O problema relatado na issue #28 (closed) é que a classe LabelShortcode possui trechos de código repetidos que podiam ser sintetizados de forma melhor em funções

...
        function label_essay_title(){

            global $db; //PEGA A BASE DE DADOS GLOBAL DO WP
            $info = $db->get_results('SELECT titulo from Redacao ORDER BY redacao_id DESC'  ); //recebe a info da redação    
                ?>

                  <?php  echo $info[0]->titulo; ?>
                  
                  <?php 
        }
        function label_essay_due_date(){

            global $db; //PEGA A BASE DE DADOS GLOBAL DO WP
            $due_date = $db->get_results('SELECT data from Redacao ORDER BY redacao_id DESC'  ); //recebe a info da redação

            echo $due_date[0]->data;
                ?>                  
                  <?php 
        }
...

Observa-se no trecho de código acima que as duas funções são idênticas, diferindo apenas de uma palavra, onde aparece 'titulo' na primeira, aparece 'data' na segunda Portanto, foi criada uma função que recebe $c por parâmetro, sendo $c a coluna a ser coletada da base de dados e as funções que possuíam trecho repetido chamam esta função nova passando parâmetros $c diferentes Código novo:


        function label_essay_title(){
            //Atribui o  título da redação
            label_essay_set_text('titulo'); 

        }

        function label_essay_due_date(){
            //Atribui a data limite de entrega da redação
            label_essay_set_text('data'); 

        }
...
...
...
function label_essay_set_text($c){
        //Retorna o valor de uma coluna $c da tabela Redacao na base de dados e atribui ao componente com o shortcode

        global $db; //PEGA A BASE DE DADOS GLOBAL DO WP
        $info = $db->get_results('SELECT '.$c.' from Redacao ORDER BY redacao_id DESC'  ); //recebe a info da redação
        ?>

    
        <?php echo $info[0]->$c; ?>
        
              
              
              <?php 
    }

Referências

[Duplicate code] (https://refactoring.guru/smells/duplicate-code)

Issue

Número da issue: #28 (closed)

Edited by Renan Luis Moraes de Sousa

Merge request reports