Web Imagens Vídeos Mapas Notícias Orkut Gmail mais »
Grupos visitados recentemente | Ajuda | Acessar
Página inicial dos Grupos do Google
Estruturando condicionais e blocos repetidos de código
Há um número excessivo de tópicos que aparecem em primeiro plano neste grupo. Para fazer com que este tópico apareça primeiro, elimine essa opção de um outro tópico.
Erro ao processar a solicitação. Tente novamente.
sinalizar
  13 mensagens - Recolher todas  -  Traduzir tudo para Traduzido (ver todos os originais)
O grupo no qual você está postando é um grupo da Usenet. As mensagens postadas neste grupo farão com que o seu e-mail fique visível para qualquer pessoa na internet.
Sua resposta não foi enviada.
Postagem publicada
 
De:
Para:
Cc:
Encaminhar para
Adicionar Cc | Adicionar Encaminhar para | Editar Assunto
Assunto:
Validação:
Com o objetivo de verificação, digite os caracteres que você vê na figura abaixo ou os números que ouvir ao clicar no ícone de acessibilidade. Ouça e digite os números que ouvir
 
Flávio Santos  
Ver perfil   Traduzir para Traduzido (ver original)
 Mais opções 8 nov, 11:43
De: Flávio Santos <flavio.bar...@gmail.com>
Data: Sun, 8 Nov 2009 11:43:33 -0200
Local: Dom 8 nov 2009 11:43
Assunto: Estruturando condicionais e blocos repetidos de código

Oi galera,

Queria saber a opinião de vocês sobre formas de estruturar códigos e evitar
repetições.
Consideremos o código abaixo:

if (A) {
    bloco1;
    ...
    bloco2;

} else {

    if (B) {
        bloco1;
        ...
        bloco2;
    }

}

Claramente temos dois trechos de códigos repetidos (bloco1 e bloco2).
Uma outra forma de fazer é, que por sua vez, repete as condicionais:

if (A || B) bloco1;
if (A) {
    ...

} else if (B) {
    ...
}

if (A || B) bloco2;

Alguém defende um estilo ou o outro?
Argumentos?
Eu fico com a opção 2, mas prefiro "ouvir" vocês antes de tecer comentários
;-)

[]'s

Flávio Roberto Santos
http://www.inf.ufrgs.br/~frsantos


    Responder    Responder ao autor    Encaminhar  
É necessário Acessar antes de postar mensagens.
Para postar uma mensagem você precisa primeiro participar deste grupo.
Atualize seu apelido na página de configurações da inscrição antes de postar.
Você não tem a permissão necessária para postar.
Thiago Ramalho  
Ver perfil   Traduzir para Traduzido (ver original)
 Mais opções 8 nov, 12:14
De: Thiago Ramalho <thiago.nrama...@gmail.com>
Data: Sun, 8 Nov 2009 11:14:55 -0300
Local: Dom 8 nov 2009 12:14
Assunto: Re: [PBJUG] Estruturando condicionais e blocos repetidos de código
Cara, no lugar de fazer dois Ifs vc pode botar o bloco1 e bloco2 no mesmo if.

if (A || B){
bloco1;
bloco2;

}

if (A) {
    ...

} else if (B) {
    ...
}

2009/11/8 Flávio Santos <flavio.bar...@gmail.com>:

--
Thiago N Ramalho.
Estagiário da DATAPREV - Empresa de Tecnologia e Informações da
Previdência Social
Bacharelando em Sistemas de Informação, 7º Período
"O sangue em nossas veias, nos permite viver. O sangue nos nossos
sonhos, nos faz vencer!"

    Responder    Responder ao autor    Encaminhar  
É necessário Acessar antes de postar mensagens.
Para postar uma mensagem você precisa primeiro participar deste grupo.
Atualize seu apelido na página de configurações da inscrição antes de postar.
Você não tem a permissão necessária para postar.
Marcio Dorimar  
Ver perfil   Traduzir para Traduzido (ver original)
 Mais opções 8 nov, 12:30
De: Marcio Dorimar <marciodori...@gmail.com>
Data: Sun, 8 Nov 2009 12:30:24 -0200
Local: Dom 8 nov 2009 12:30
Assunto: Re: [PBJUG] Re: Estruturando condicionais e blocos repetidos de código

Fiquei nesse impasse semana passada.
Como fui eu quem desenvolveu o "bloco1" e o "bloco2", o fluxo principal
ficou assim:

bloco1(A, B)
....
bloco2(A, B)

Fora desse cenário, eu iria também com a opção 2.

2009/11/8 Thiago Ramalho <thiago.nrama...@gmail.com>

--
Márcio Dorimar da Silva Gomes
Stefanini IT Solutions (Brasília/DF)
Graduado em Ciências da Computacao - DSC - UFCG

    Responder    Responder ao autor    Encaminhar  
É necessário Acessar antes de postar mensagens.
Para postar uma mensagem você precisa primeiro participar deste grupo.
Atualize seu apelido na página de configurações da inscrição antes de postar.
Você não tem a permissão necessária para postar.
Flávio Santos  
Ver perfil   Traduzir para Traduzido (ver original)
 Mais opções 8 nov, 12:43
De: Flávio Santos <flavio.bar...@gmail.com>
Data: Sun, 8 Nov 2009 12:43:57 -0200
Local: Dom 8 nov 2009 12:43
Assunto: Re: [PBJUG] Re: Estruturando condicionais e blocos repetidos de código

Thiago, existem códigos entre os blocos1 e 2. Não pode simplesmente
agrupá-los num mesmo condicional. :-)

Flávio Roberto Santos
http://www.inf.ufrgs.br/~frsantos

2009/11/8 Thiago Ramalho <thiago.nrama...@gmail.com>


    Responder    Responder ao autor    Encaminhar  
É necessário Acessar antes de postar mensagens.
Para postar uma mensagem você precisa primeiro participar deste grupo.
Atualize seu apelido na página de configurações da inscrição antes de postar.
Você não tem a permissão necessária para postar.
Maurício Linhares  
Ver perfil   Traduzir para Traduzido (ver original)
 Mais opções 8 nov, 13:00
De: Maurício Linhares <linhares.mauri...@gmail.com>
Data: Sun, 8 Nov 2009 12:00:19 -0300
Local: Dom 8 nov 2009 13:00
Assunto: Re: [PBJUG] Estruturando condicionais e blocos repetidos de código
Opa Flávio,

Acho que uma boa seria mover os condicionais para predicados, eu
imagino que o código poderia ser exemplificado assim:

if ( A ) {
  //azul

} else {

  if ( B ) {
    //verde
  } else {
    //vermelho
  }

}

Assumindo que cada condicional é excludente (ou vocè é azul, verde ou
vemelho, nunca alguma coisa entre eles), seria possível montar um
switch:

switch ( this.getCor() ) {
  case Cores.AZUL:
    {
       //azul
       break;
    }
  case Cores.VERMELHO:
    {
       //vermelho
       break;
    }

}

E assim segue. O switch do java é feio e ruim de usar, mas acho que a
condicional fica bem mais organizada.

-
Maurício Linhares
http://codeshooter.wordpress.com/ | http://twitter.com/mauriciojr

2009/11/8 Flávio Santos <flavio.bar...@gmail.com>:


    Responder    Responder ao autor    Encaminhar  
É necessário Acessar antes de postar mensagens.
Para postar uma mensagem você precisa primeiro participar deste grupo.
Atualize seu apelido na página de configurações da inscrição antes de postar.
Você não tem a permissão necessária para postar.
Cleber Borges  
Ver perfil   Traduzir para Traduzido (ver original)
 Mais opções 8 nov, 12:54
De: Cleber Borges <cleber.fate...@hotmail.com>
Data: Sun, 8 Nov 2009 14:54:53 +0000
Local: Dom 8 nov 2009 12:54
Assunto: RE: [PBJUG] Re: Estruturando condicionais e blocos repetidos de código

Talvez o exemplo que está dando não dê subsídio suficiente para sabermos a situação.

AFinal de contas, se o bloco 1 e 2 irão acontecer independentemente de ser a opção A ou B não há necessidade real de fazer mais do que um IF.

Porém, aquilo que parece estar fazendo está mais para um switch case do que if.... pois vc pode dar o break e continuar a sequencia de codigos que precisar depois....

From: flavio.bar...@gmail.com
Date: Sun, 8 Nov 2009 12:43:57 -0200
Subject: [PBJUG] Re: Estruturando condicionais e blocos repetidos de código
To: pbjug@googlegroups.com

Thiago, existem códigos entre os blocos1 e 2. Não pode simplesmente agrupá-los num mesmo condicional. :-)

Flávio Roberto Santos
http://www.inf.ufrgs.br/~frsantos

2009/11/8 Thiago Ramalho <thiago.nrama...@gmail.com>

Cara, no lugar de fazer dois Ifs vc pode botar o bloco1 e bloco2 no mesmo if.

if (A || B){
bloco1;
bloco2;

}

if (A) {
   ...

} else if (B) {
   ...
}

2009/11/8 Flávio Santos <flavio.bar...@gmail.com>:

--
Thiago N Ramalho.
Estagiário da DATAPREV - Empresa de Tecnologia e Informações da
Previdência Social
Bacharelando em Sistemas de Informação, 7º Período
"O sangue em nossas veias, nos permite viver. O sangue nos nossos
sonhos, nos faz vencer!"

_________________________________________________________________
Agora a pressa é amiga da perfeição. Chegou o Windows 7. Conheça!
http://www.microsoft.com/brasil/windows7/default.html?WT.mc_id=1539


    Responder    Responder ao autor    Encaminhar  
É necessário Acessar antes de postar mensagens.
Para postar uma mensagem você precisa primeiro participar deste grupo.
Atualize seu apelido na página de configurações da inscrição antes de postar.
Você não tem a permissão necessária para postar.
Flávio Santos  
Ver perfil   Traduzir para Traduzido (ver original)
 Mais opções 8 nov, 13:40
De: Flávio Santos <flavio.bar...@gmail.com>
Data: Sun, 8 Nov 2009 13:40:35 -0200
Local: Dom 8 nov 2009 13:40
Assunto: Re: [PBJUG] Re: Estruturando condicionais e blocos repetidos de código

Opa Maurício,

Onde tem bloco1 representa um mesmo trecho de código.
O mesmo vale para o bloco2. São códigos repetidos.
Dá pra imaginar como sendo duas chamadas de método.

Citando Cleber:

> AFinal de contas, se o bloco 1 e 2 irão acontecer independentemente de ser
> a opção A ou B não há necessidade real de fazer mais do que um IF.

Claro que há necessidade.
Primeiro o bloco1 deve ser executado (se A ou B for satisfeito).
Depois, se A, então executo um código específico (representando por
reticências). Senão, se for B, eu executo outro código.
Por fim, se A ou B for satisfeito, eu executo o bloco2.

Deu para entender?

[]'s

Flávio Roberto Santos
http://www.inf.ufrgs.br/~frsantos

2009/11/8 Maurício Linhares <linhares.mauri...@gmail.com>


    Responder    Responder ao autor    Encaminhar  
É necessário Acessar antes de postar mensagens.
Para postar uma mensagem você precisa primeiro participar deste grupo.
Atualize seu apelido na página de configurações da inscrição antes de postar.
Você não tem a permissão necessária para postar.
Maurício Linhares  
Ver perfil   Traduzir para Traduzido (ver original)
 Mais opções 8 nov, 13:46
De: Maurício Linhares <linhares.mauri...@gmail.com>
Data: Sun, 8 Nov 2009 12:46:31 -0300
Local: Dom 8 nov 2009 13:46
Assunto: Re: [PBJUG] Re: Estruturando condicionais e blocos repetidos de código
Sinceramente, não entendi ;)

Mas enfim, if com outro if aninhado dentro do else normalmente
significa que você queria um switch, mas como o switch do java é
basicamente inútil você termina indo pra o caminho mais simples.

Se predicados não resolvem o seu problema, eu realmente não acho que
hajam muitas opções. O problema de colocar os ifs fora do else é o
custo em processamento que pode ser grande dependendo do custo de
execução de cada condição.

-
Maurício Linhares
http://codeshooter.wordpress.com/ | http://twitter.com/mauriciojr

2009/11/8 Flávio Santos <flavio.bar...@gmail.com>:


    Responder    Responder ao autor    Encaminhar  
É necessário Acessar antes de postar mensagens.
Para postar uma mensagem você precisa primeiro participar deste grupo.
Atualize seu apelido na página de configurações da inscrição antes de postar.
Você não tem a permissão necessária para postar.
Flávio Santos  
Ver perfil   Traduzir para Traduzido (ver original)
 Mais opções 8 nov, 14:05
De: Flávio Santos <flavio.bar...@gmail.com>
Data: Sun, 8 Nov 2009 14:05:02 -0200
Local: Dom 8 nov 2009 14:05
Assunto: Re: [PBJUG] Re: Estruturando condicionais e blocos repetidos de código

Na real eu não tenho problema, só queria ouvir opiniões sobre como vcs
estruturariam um código desse tipo. Argumentos, prós, contras etc...

Imagine exatamente os dois códigos abaixo. Exatamente como está.
O fluxo de execução deve ser mantido.
Como você o organizaria? Da forma 1, da forma 2, de outra forma? Por que?
Note que os dois códigos abaixo fazer exatamente a mesma coisa para todas as
possibilidades de A e B.

Código 1:

if (A) {
    bloco1();
    // ... bloco3();
    bloco2();

} else {

    if (B) {
        bloco1();
        // ... bloco4();
        bloco2();
    }

}

Código 2:

if (A || B) bloco1();
if (A) {
    // ... bloco3();

} else if (B) {

    // ... bloco4();
}

if (A || B) bloco2();

[]'s

Flávio Roberto Santos
http://www.inf.ufrgs.br/~frsantos

2009/11/8 Maurício Linhares <linhares.mauri...@gmail.com>


    Responder    Responder ao autor    Encaminhar  
É necessário Acessar antes de postar mensagens.
Para postar uma mensagem você precisa primeiro participar deste grupo.
Atualize seu apelido na página de configurações da inscrição antes de postar.
Você não tem a permissão necessária para postar.
Thiago Ramalho  
Ver perfil   Traduzir para Traduzido (ver original)
 Mais opções 8 nov, 14:54
De: Thiago Ramalho <thiago.nrama...@gmail.com>
Data: Sun, 8 Nov 2009 13:54:19 -0300
Local: Dom 8 nov 2009 14:54
Assunto: Re: [PBJUG] Re: Estruturando condicionais e blocos repetidos de código
Assim vc pouparia entrar em outro IF.
if (A || B){
 bloco1();
if (A) {
    // ... bloco3();
} else if (B) {

    // ... bloco4();

}
bloco2();
}

2009/11/8 Flávio Santos <flavio.bar...@gmail.com>:

--
Thiago N Ramalho.
Estagiário da DATAPREV - Empresa de Tecnologia e Informações da
Previdência Social
Bacharelando em Sistemas de Informação, 7º Período
"O sangue em nossas veias, nos permite viver. O sangue nos nossos
sonhos, nos faz vencer!"

    Responder    Responder ao autor    Encaminhar  
É necessário Acessar antes de postar mensagens.
Para postar uma mensagem você precisa primeiro participar deste grupo.
Atualize seu apelido na página de configurações da inscrição antes de postar.
Você não tem a permissão necessária para postar.
Maurício Linhares  
Ver perfil   Traduzir para Traduzido (ver original)
 Mais opções 8 nov, 19:27
De: Maurício Linhares <linhares.mauri...@gmail.com>
Data: Sun, 8 Nov 2009 18:27:25 -0300
Local: Dom 8 nov 2009 19:27
Assunto: Re: [PBJUG] Re: Estruturando condicionais e blocos repetidos de código
Ah, caiu a ficha agora, quando Java tiver suporte a closures vai ser
mais simples de fazer isso ;D

Eu faria do jeito 2, acho mais fácil de entender, mas não vejo
vantagens em nenhum dos dois. Acho que do jeito que o Thiago comentou
também fica bem mais legível e evita os ifs de uma linha.

-
Maurício Linhares
http://codeshooter.wordpress.com/ | http://twitter.com/mauriciojr

2009/11/8 Flávio Santos <flavio.bar...@gmail.com>:


    Responder    Responder ao autor    Encaminhar  
É necessário Acessar antes de postar mensagens.
Para postar uma mensagem você precisa primeiro participar deste grupo.
Atualize seu apelido na página de configurações da inscrição antes de postar.
Você não tem a permissão necessária para postar.
Cleber Borges  
Ver perfil   Traduzir para Traduzido (ver original)
 Mais opções 8 nov, 20:28
De: Cleber Borges <cleber.fate...@hotmail.com>
Data: Sun, 8 Nov 2009 22:28:56 +0000
Local: Dom 8 nov 2009 20:28
Assunto: RE: [PBJUG] Re: Estruturando condicionais e blocos repetidos de código

Agora ficou melhor explicado.

eu faria uma "versão" do seu código 1

if (A) {    bloco1();    // ... bloco3();    bloco2();} else if(b)      {        bloco1();        // ... bloco4();        bloco2();    }

 else{

...}

vai ter mais linhas, mas parece ser mais objetivo pro processador...

testa se é A, se não é ja pula logo pro 2º teste... Isso é mais objetivo do que testar se é A ou B pra executar um determinado codigo e dependendo de quem for executar outro...

e a clausula else no fim é pra q vc use caso não seja nenhum dos dois...

porém, pelo jeito existe a possibilidade de ter um C ou um D ou sabe-se lá mais o que...

dai volto pra ideia de q um switch case é melhor...

o siwtch case dispensa o primeiro condicional de ver se é um ou outro... entrou nele ele verifica quem é e executa o que se pede de acordo com quem eh... e tem o default... se entrar nele e não for nada do que se espera, faz o default...

From: flavio.bar...@gmail.com
Date: Sun, 8 Nov 2009 14:05:02 -0200
Subject: [PBJUG] Re: Estruturando condicionais e blocos repetidos de código
To: pbjug@googlegroups.com

Na real eu não tenho problema, só queria ouvir opiniões sobre como vcs estruturariam um código desse tipo. Argumentos, prós, contras etc...

Imagine exatamente os dois códigos abaixo. Exatamente como está.
O fluxo de execução deve ser mantido.
Como você o organizaria? Da forma 1, da forma 2, de outra forma? Por que?
Note que os dois códigos abaixo fazer exatamente a mesma coisa para todas as possibilidades de A e B.

Código 1:

if (A) {    bloco1();    // ... bloco3();    bloco2();} else {    if (B) {        bloco1();        // ... bloco4();        bloco2();    }}

Código 2:

if (A || B) bloco1();if (A) {    // ... bloco3();} else if (B) {    // ... bloco4();}if (A || B) bloco2();

[]'s
Flávio Roberto Santos
http://www.inf.ufrgs.br/~frsantos

2009/11/8 Maurício Linhares <linhares.mauri...@gmail.com>

Sinceramente, não entendi ;)

Mas enfim, if com outro if aninhado dentro do else normalmente
significa que você queria um switch, mas como o switch do java é
basicamente inútil você termina indo pra o caminho mais simples.

Se predicados não resolvem o seu problema, eu realmente não acho que
hajam muitas opções. O problema de colocar os ifs fora do else é o
custo em processamento que pode ser grande dependendo do custo de
execução de cada condição.

-
Maurício Linhares
http://codeshooter.wordpress.com/ | http://twitter.com/mauriciojr

2009/11/8 Flávio Santos <flavio.bar...@gmail.com>:

_________________________________________________________________
Novo site do Windows Live: Novidades, dicas dos produtos e muito mais. Conheça!
http://www.windowslive.com.br/?ocid=WindowsLive09_MSN_Hotmail_Tagline...

    Responder    Responder ao autor    Encaminhar  
É necessário Acessar antes de postar mensagens.
Para postar uma mensagem você precisa primeiro participar deste grupo.
Atualize seu apelido na página de configurações da inscrição antes de postar.
Você não tem a permissão necessária para postar.
grasshopper  
Ver perfil   Traduzir para Traduzido (ver original)
 Mais opções 15 nov, 15:25
De: grasshopper <pbde...@gmail.com>
Data: Sun, 15 Nov 2009 14:25:02 -0300
Local: Dom 15 nov 2009 15:25
Assunto: Re: [PBJUG] Re: Estruturando condicionais e blocos repetidos de código

*Flávio, o código abaixo também não seria uma alternativa? Se sim, acho que
fica mais claro.

if(A || B) {
    bloco1;

    if(A){
        ...
    } else {
        ...
    }

    bloco2;

}*

2009/11/8 Flávio Santos <flavio.bar...@gmail.com>


    Responder    Responder ao autor    Encaminhar  
É necessário Acessar antes de postar mensagens.
Para postar uma mensagem você precisa primeiro participar deste grupo.
Atualize seu apelido na página de configurações da inscrição antes de postar.
Você não tem a permissão necessária para postar.
Fim das mensagens
« Voltar às Discussões « Tópico recente     Tópico antigo »

Criar um grupo - Grupos do Google - Página inicial do Google - Termos de Uso - Política de Privacidade
©2009 Google