Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rodolfo TI

Código que se repete, crio função externa ou inter ?

Recommended Posts

Olá amigos em mais uma de minhas refatorações me deparei com o seguinte código;

 

 

 
 <?php
       print "<strong>".$_POST['projeto']."</strong> - ".$_POST['metier']." - ".$_POST['aceitador']." - ".$_POST['fornecedor'];
       
       if (isset($_GET['indice']) && $_GET['indice'] == 1){ ?>
      <tr>
        <td align="center"><img src="indicadorEAatualteste.php?projeto=<?php print $_POST['projeto']?>&metier=<?php print $_POST['metier']?>&aceitador=<?php print $_POST['aceitador']?>&fornecedor=<?php print $_POST['fornecedor']?>"></td>
      </tr>
      <?php } if (isset($_GET['indice']) && $_GET['indice'] == 2){ ?>
      <tr>
        <td align="center">
        
        <img src="indicadorEARecAtual.php?projeto=<?php print $_POST['projeto']?>&metier=<?php print $_POST['metier']?>&aceitador=<?php print $_POST['aceitador']?>&fornecedor=<?php print $_POST['fornecedor']?>" />
        
        
        <img src="indicadorEARecILAtual.php?projeto=<?php print $_POST['projeto']?>&metier=<?php print $_POST['metier']?>&aceitador=<?php print $_POST['aceitador']?>&fornecedor=<?php print $_POST['fornecedor']?>"/></td>
      </tr>
      <tr>
        <td align="center"><img src="indicadorEARecAtualRU2.php?projeto=<?php print $_POST['projeto'];?>&metier=<?php print $_POST['metier']?>&aceitador=<?php print $_POST['aceitador']?>&fornecedor=<?php print $_POST['fornecedor']?>" />
        <?php
                $sql1 = "select count(*) qtd from reconduzidas where tipo = 'RU4' and projeto_ckd='".$_POST['projeto']."'";
                $qry1 = mysql_query($sql1);
                $qtd = 0;
                while($arr1 = mysql_fetch_array($qry1)){
                    $qtd = $arr1['qtd'];
                }
                if($qtd > 0){ ?>
        <img src="indicadorEARecAtualRU4.php?projeto=<?php print $_POST['projeto']?>&metier=<?php print $_POST['metier']?>&aceitador=<?php print $_POST['aceitador']?>&fornecedor=<?php print $_POST['fornecedor']?>" />
        
        <?php }else{ ?>
                <img src="imagens/cancelar_grande.png" title='Não existem peças RU4 cadastradas para este projeto!' />
        <?php } ?>
        </td>
      </tr>
      <?php } if (isset($_GET['indice']) && $_GET['indice'] == 3){ ?>
      <tr>
        <td align="center"><img src="indicadorEvTotal.php?projeto=<?php print $_POST['projeto']?>&metier=<?php print $_POST['metier']?>&aceitador=<?php print $_POST['aceitador']?>&fornecedor=<?php print $_POST['fornecedor']?>"> </td>
      </tr>
      <tr>
        <td align="center"><img src="indicadorEvProcesso.php?projeto=<?php print $_POST['projeto']?>&metier=<?php print $_POST['metier']?>&aceitador=<?php print $_POST['aceitador']?>&fornecedor=<?php print $_POST['fornecedor']?>"> </td>
      </tr>
      <tr>
        <td align="center"><img src="indicadorEvProduto.php?projeto=<?php print $_POST['projeto']?>&metier=<?php print $_POST['metier']?>&aceitador=<?php print $_POST['aceitador']?>&fornecedor=<?php print $_POST['fornecedor']?>"> </td>
      </tr>
      <?php }?>]
 

 

Só esse trecho

 

 

 
print $_POST['projeto']?>&metier=<?php print $_POST['metier']?>&aceitador=<?php print $_POST['aceitador']?>&fornecedor=<?php print $_POST['fornecedor']?>" />
 

 

Apareceu umas 4 vezes, devo criar uma função para executar essa tarefa, caso sim é melhor internamente ou externamente ? Não sei bem que orientação esse código seguiu mas OO não foi.

 

Grande abraço, desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que criar uma função por criar não é uma boa ideia, procure alguma orientação ou design pattern que te auxilie melhor.

 

Na verdade penso em criar uma função para não repetir tantas vez o trecho:



<?php print $_POST['projeto']?>&metier=<?php print $_POST['metier']?>&aceitador=<?php print $_POST['aceitador']?>&fornecedor=<?php print $_POST['fornecedor']?>"> </td>

 

Este se repete várias vezes e atrapalha um pouco na manutenção do código.

 

 

Irei detalhar um pouco mais minha dúvida, este código é usado para chamar os gráficos em um sistema porém surgiu a necessidade de colocar um novo gráfico, com um indice diferente porém este código ta tão confuso que não sei bem o que fazer para organiza-lo afim de conseguir fazer as modificações com mais clareza.

 

Obs: Código sem comentários e sem documentação.

 

Vou dar uma olhada no design patterns, sempre ouço falar mas nao conheço vou verificar onde ele pode me ajudar.

 

Edit: Cara vi aqui o lance do design patterns li algumas coisas, claro de maneira superficial, mas já deu pra ver que o código/sistema que tenho não segue em NADA , não tenho classes, herança, está me parendo um tanto procedural.

 

Acha que ainda sim uma função pra me facilitar iria ficar ao "vento" já que não sigo orientação

Pensei em algo do tipo

 

 
<?php
function referenciar(){
     print $_POST['projeto']
     print $_POST['metier']
     print $_POST['aceitador']
     print $_POST['fornecedor']
 }

?>
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia,

 

Como você já delimitou algumas variáveis, a minha sugestão é: construa as funções para lhe ajudar a não se repetir.

 

Uma outra alternativa e talvez a mais adequada seria a utilização de Orientação a Objeto, e consequentemente a reutilização de código, pois este por sua vez é um dos princípios de OO.

 

Espero que ajude.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia,

 

Como você já delimitou algumas variáveis, a minha sugestão é: construa as funções para lhe ajudar a não se repetir.

 

Uma outra alternativa e talvez a mais adequada seria a utilização de Orientação a Objeto, e consequentemente a reutilização de código, pois este por sua vez é um dos princípios de OO.

 

Espero que ajude.

É exatamente isso que preciso porém nesse código existe uma mesclagem de código html com php não sei como transcrever isso para uma função, é só colocar identico ao código ? e Chamar a função por exemplo:

 

Còdigo inicial:

 

 

 
<tr>
        <td align="center"><img src="indicadorEvProcesso.php?projeto=<?php print $_POST['projeto']?>&metier=<?php print $_POST['metier']?>&aceitador=<?php print $_POST['aceitador']?>&fornecedor=<?php print $_POST['fornecedor']?>"> </td>
      </tr>

 

 

Refatorando ficaria assim

 

a função

 

<?php
function referenciar(){
 
print $_POST['projeto']?>&metier=<  // aqui nao to sabendo mesclar o html com php
print $_POST['metier']?>&aceitador=
print $_POST['aceitador']?>&fornecedor=
print $_POST['fornecedor']
}
?>

 

e o html lá simplificaria

 

<tr>
        <td align="center">
        <img src="indicadorEvProcesso.php?projeto=<?php referenciar(); ?>>
        </td>
</tr>

Compartilhar este post


Link para o post
Compartilhar em outros sites

o segredo esta em mudar tudo que colocar todas as variaveis como parametro.

 

exemplo

 

 

 

function gerarLink($pagina, $nome_link, $valor_link, $titulo_link){
return "<a href="$pagina.php?$nome_link=$valor_link">$titulo_link</a>";

}

 

chamar a função

 

 

 

gerarLink('contato', 'email', 'email@email.com', 'Contato');

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

o segredo esta em mudar tudo que colocar todas as variaveis como parametro.

 

exemplo

 

 

 

function gerarLink($pagina, $nome_link, $valor_link, $titulo_link){
return "<a href="$pagina.php?$nome_link=$valor_link">$titulo_link</a>";

}

 

chamar a função

 

 

 

gerarLink('contato', 'email', 'email@email.com', 'Contato');

 

Os campos seriam dessa forma mesmo ? No seu exemplo.

 

Esse conceito tem um nome ?

Hoje eu estou passando por referencia através o método post, deveria atribuir por parâmetro em uma outra variável ?

Acho que a solução é bem nesse caminho mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

As vezes, o ponto de vista diferente, pode mudar a facilidade da função.

 

O DOM pode ser trabalhado pelo padrão Composite, mas seria abranger muito além da sua necessidade atual. Como eu já possua algumas coisas prontas, e adaptar para a sua realidade não é muito difícil. Eu utilizaria um objeto, se é para reutilização de código. Mas dependendo do tipo de reutilização, você acaba escrevendo mais do que ao invés de menos.

 

Class HiperLink {
    
    private $href;
    private $title;
    private $queryString = array();
        
    public function setHref($href) {
        $this->href = $href;
    }
    public function setTitle($title) {
        $this->title = $title;
    }
    public function addVariable($name , $value) {
        if(is_string($name)) {
            $this->queryString[] = $name.'='.$value;        
        } else {
            throw new RuntimeException('Name necessita ser uma string.');
        }
    }
    
    public function __toString() {
        
        $href = $this->href;
        if(count($this->queryString) > 0) {
            $href .= '?'.implode('&' , $this->queryString);
        }
        
        return sprintf(
            '<a href="%1$s" title="%2$s">%2$s</a>',
            $href,
            $this->title
        );
    }    
}

 

Uso:

$link = new HiperLink();
$link->setHref('indicadorEvProcesso.php');
$link->addVariable('projeto' , 'valor1');
$link->addVariable('metier' , 'valor2');
$link->addVariable('aceitador' , 'valor3');
$link->addVariable('fornecedor' , 'valor4');
$link->setTitle('Título do meu hiperlink');

echo $link;

 

Saída:

<a href="indicadorEvProcesso.php?projeto=valor1&metier=valor2&aceitador=valor3&fornecedor=valor4" title="Título do meu hiperlink">Título do meu hiperlink</a>

 

Eu particularmente não utilizo isso. Acho que seria escrever mais do que o necessário, mas sempre há sua utilização, como padronização de código, e a obrigação em utilizar determinados parâmetros para se manter dentro das webstandards.

Compartilhar este post


Link para o post
Compartilhar em outros sites

evite trabalhar com variaveis globais, é melhor sempre passar um copia da variavel para a função do q alterar corromper o valor original.

no php existem duas formas de paramentros uma por valor(copia) e a outra por referencia ou seja quando vc passa pela ultima forma, o conteudo da variavel pode ser alterado dentro de um função.

 

http://www.geeksbr.com/2010/10/php-passagem-de-parametros-por.html

http://www.criarweb.com/artigos/86.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso mesmo Gabriel, foi minha primeiro sugestão. mas como ele queria algo mais como uma simples função resolvi dar aquele exemplo.

Mas sem dúvida no final criar um objeto seria o ideal

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza, desculpe a demora, como não tenho muito conhecimento sobre algumas técnicas utilizadas por vocês como DOM e até mesmo um conceito bem estabelecido sobre composite fui dar uma pesquisada para me situar melhor, tenho que concordar que criar o objeto é a melhor solução, tenho que estudar um pouco mais para poder aplicar algo desse tipo.

 

Em uma aplicação feita "nas coxas" esse é um passo para refatoração ?

 

Temos o projeto se lançar uma outra versão desse sistema, utilizando este como base porém com uma documentação bem feita, estabelecimento de testes e com certeza OO.

 

No momento preciso adicionar uma funcionalidade ( na verdade mais um indicador) na opinião de vocês faço uma ação paleativa afim de reduzir o prazo de entrega, ou estendo o prazo de entrega e faço como deve ser ?

 

O post do Gabriel foi super 10 , confesso que ainda estou entendendo algumas coisas por limitações minhas mas dá pra ver que é super direcionado e objetivo. Muito show! Parabéns!

 

 

Obrigado pessoal, vocês mandam bem demais!

 

@offtopic: uma pena ter passado o limite de qualificações positivas por hoje ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

você acaba escrevendo mais do que ao invés de menos.

 

as vezes acontece, a qualidade do código que postou é incrível você comentou que tem algumas coisas nesse segmento pegou afim de gerar algo ou só a nível de conhecimento, dica de algo que deva ver ?

 

 

Fiquei em dúvida em como manter o uso das condicionais depois de ter trabalhado o link vou tentar algumas coisas aqui e posto pra vocês só não o faço agora por que estou no trab, e está um pouco agitado. Mais um vez obrigado.

 

Usuaria arquivos separados ali no aplicação que me indicou ?

 

A partir dessa dúvida vi algumas coisas que tenho que ler mais e inclusive já comentei

  • Design Patterns
  • Passagem de Valores por prametro e por referencia
  • DOM / Composite
  • E ir mais afundo na OO

 

algo mais ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Passagem de Valores por prametro e por referencia

na verdade isso você pode esquecer, isso não significa muita coisa.

 

no OO você verá como fazer isso mas aplicando conceito no qual é o mais importante no momento.

 

o OO é extenso de mais se puder comece já, eu ainda tenho dúvidas(2 aninhos estudando).

 

Aproveita o forum que tem vários feras como o shini, gabriel, bruno, Prog, e claro o neto dentre outros que esqueci de citar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade isso você pode esquecer, isso não significa muita coisa.

 

no OO você verá como fazer isso mas aplicando conceito no qual é o mais importante no momento.

 

o OO é extenso de mais se puder comece já, eu ainda tenho dúvidas(2 aninhos estudando).

 

Aproveita o forum que tem vários feras como o shini, gabriel, bruno, Prog, e claro o neto dentre outros que esqueci de citar.

Concerteza, agradeço e muito, o trabalho de vocês tem que ser valorizado. E em breve pretendo fazer o mesmo pois compartilhar conhecimento só nos enriquece.

 

acha que um curso é válido ? Preciso aprender o mais rápido possível acho que um curso auxiliaria mesmo online, no segmente de treinaweb etc. Vou ver os tópicos que tratam a respeito

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aproveite a área do curso de PHP aqui do fórum, tem muito material bom.
http://forum.imasters.com.br/forum/159-curso-de-php/

Eu aprendi OO em Java. Os Patterns aprendi quando já programava em PHP, mas não conheço todos ainda. Ainda não consegui chegar na metade dos primeiros patterns documentados (GoF). Existem muitos outros. Conheço alguns fora do GoF, mas não é muita coisa. Os patterns não são algo que toda a aplicação deve ter, ele é uma solução para um problema conhecido. Uma vez criada a solução, é muito raro modifica-la ou precisar criar novamente (do zero).

 

Eu mesmo fiz um curso no Imasters Pro, o de MVC na Prática. Depois, juntei o que vi de bom em outros Frameworks, o que aprendi no curso e mesclei, desenvolvendo um Framework que atualmente eu utilizo.

 

Claro que no curso você não irá fazer uma estrutura MVC perfeita. Mas aprende-se muito e o que realmente é o MVC. E o mais é experiência mesmo.

 

Neste tópico, há dicas que dei para uma programador iniciante:

http://forum.imasters.com.br/topic/479646-boas-praticas-php/?p=1907012

 

Se quiser estudar, tem muito material ai para pesquisar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aproveite a área do curso de PHP aqui do fórum, tem muito material bom.

http://forum.imasters.com.br/forum/159-curso-de-php/

 

Eu aprendi OO em Java. Os Patterns aprendi quando já programava em PHP, mas não conheço todos ainda. Ainda não consegui chegar na metade dos primeiros patterns documentados (GoF). Existem muitos outros. Conheço alguns fora do GoF, mas não é muita coisa. Os patterns não são algo que toda a aplicação deve ter, ele é uma solução para um problema conhecido. Uma vez criada a solução, é muito raro modifica-la ou precisar criar novamente (do zero).

 

Eu mesmo fiz um curso no Imasters Pro, o de MVC na Prática. Depois, juntei o que vi de bom em outros Frameworks, o que aprendi no curso e mesclei, desenvolvendo um Framework que atualmente eu utilizo.

 

Claro que no curso você não irá fazer uma estrutura MVC perfeita. Mas aprende-se muito e o que realmente é o MVC. E o mais é experiência mesmo.

 

Neste tópico, há dicas que dei para uma programador iniciante:

http://forum.imasters.com.br/topic/479646-boas-praticas-php/?p=1907012

 

Se quiser estudar, tem muito material ai para pesquisar.

 

 

Concerteza vou olhar, vou tentar segurar a pressa e a ansiedade rsrs. para aprender da melhor forma, quanto as dúvidas que tinha para fazer da melhor forma já fui esclarecido e agradeço a vocês, decidi que essas modificações vão ficar pra uma próxima versão do sistema.

 

No momento vou tentar criar uma ação paleativa.

 

@offtopic: Estou documentando todas as modificações e dúvidas e usarei como apoio na implementação e desenvolvimento da próxima versão, por mais que não domine a linguagem essa técnica se tratando de projeto é bastante funcional.

 

Mudei ? Se mudei, porque mudei ? Precisei mudar mas não mudei, porque não mudei ? Eu realmente preciso mudar ? Qual a melhor forma de mudar ? Terei tempo de implementar da melhor forma ?

 

Sigo esse questionário para me auxiliar, se alguém usa um método parecido ou alguma ferramenta compartilhe

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Neto(Mestre da programação) falou de um dos hangouts o seguinte: "um código perfeito é um código onde você não precisa tirar e/ou nem alterar nada".

 

eu concordo com ele depois do que ele me ensinou, seguindo essa linha de raciocínio diria que seria um comentário pra sempre MAAS como o senhor esta na fase de aprendizagem seria legal criar versões e cada versão você refaz toda documentação e pode até acompanhar evolução;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho que concordar, mas acho que essa situação se refer mais ao desenvolvimento partido do marco zero, quando se trata de manutenção de uma aplicação pronta e não orientada acho que não se aplica.

 

Por isso a idéia do lançamento de versões, um novo desenvolvimento tomaria um tempo que nem sempre é viável, isso é um dos fatores que eleva os custos de alteração em projetos já implementados. Certo ? ... Por isso o MAAS..

 

 

Rsrssr. abraço!

 

O Neto(Mestre da programação) falou de um dos hangouts o seguinte: "um código perfeito é um código onde você não precisa tirar e/ou nem alterar nada".

Compartilhar este post


Link para o post
Compartilhar em outros sites

um código que não começou orientando não da pra orientar, muitas regras.

 

fiz um sistema 1 ano atrás achando ser orientando a objeto, hoje eu olho e dou risada pro code mas se eu ainda tentar escrever de novo orientando a objeto não vai da por que eu não conheço todas regras.

 

só recomeçando mesmo, pegar a ideia das interfaces é complicada de mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

um código que não começou orientando não da pra orientar, muitas regras.

Até pensei em fazer isso mas a visão é bem diferente acho que só da pra se basear nas funcionalidades do sistema.

 

Acho que podemos até dizer que seria um Universo diferente, isso pela maneira de organizar as coisas, até mesmo de planejar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.