Estruturando condicionais e blocos repetidos de código

View: New views
13 Messages — Rating Filter:   Alert me  

Estruturando condicionais e blocos repetidos de código

by Flávio Santos-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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

--~--~---------~--~----~------------~-------~--~----~
=================================================================
Site do grupo: http://pbjug.org/

Para sair da lista, envie um e-mail para pbjug-unsubscribe@...
=================================================================
-~----------~----~----~----~------~----~------~--~---


Re: Estruturando condicionais e blocos repetidos de código

by Thiago Ramalho :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


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.barata@...>:

> 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
>
> >
>



--
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!"

--~--~---------~--~----~------------~-------~--~----~
=================================================================
Site do grupo: http://pbjug.org/

Para sair da lista, envie um e-mail para pbjug-unsubscribe@...
=================================================================
-~----------~----~----~----~------~----~------~--~---


Re: Estruturando condicionais e blocos repetidos de código

by Marcio Dorimar :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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.nramalho@...>

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.barata@...>:
> 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
>
> >
>



--
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!"





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

--~--~---------~--~----~------------~-------~--~----~
=================================================================
Site do grupo: http://pbjug.org/

Para sair da lista, envie um e-mail para pbjug-unsubscribe@...
=================================================================
-~----------~----~----~----~------~----~------~--~---


Re: Estruturando condicionais e blocos repetidos de código

by Flávio Santos-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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.nramalho@...>

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.barata@...>:
> 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
>
> >
>



--
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!"




--~--~---------~--~----~------------~-------~--~----~
=================================================================
Site do grupo: http://pbjug.org/

Para sair da lista, envie um e-mail para pbjug-unsubscribe@...
=================================================================
-~----------~----~----~----~------~----~------~--~---


Re: Estruturando condicionais e blocos repetidos de código

by Cleber Borges :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.
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.barata@...
Date: Sun, 8 Nov 2009 12:43:57 -0200
Subject: [PBJUG] Re: Estruturando condicionais e blocos repetidos de código
To: pbjug@...

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.nramalho@...>

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.barata@...>:
> 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
>
> >
>



--
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!"




--~--~---------~--~----~------------~-------~--~----~
=================================================================
Site do grupo: http://pbjug.org/

Para sair da lista, envie um e-mail para pbjug-unsubscribe@...
=================================================================
-~----------~----~----~----~------~----~------~--~---


Re: Estruturando condicionais e blocos repetidos de código

by Maurício Linhares :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


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.barata@...>:

> 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
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
=================================================================
Site do grupo: http://pbjug.org/

Para sair da lista, envie um e-mail para pbjug-unsubscribe@...
=================================================================
-~----------~----~----~----~------~----~------~--~---


Re: Estruturando condicionais e blocos repetidos de código

by Flávio Santos-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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.mauricio@...>

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.barata@...>:
> 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
>
> >
>




--~--~---------~--~----~------------~-------~--~----~
=================================================================
Site do grupo: http://pbjug.org/

Para sair da lista, envie um e-mail para pbjug-unsubscribe@...
=================================================================
-~----------~----~----~----~------~----~------~--~---


Re: Estruturando condicionais e blocos repetidos de código

by Maurício Linhares :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


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.barata@...>:

> 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

--~--~---------~--~----~------------~-------~--~----~
=================================================================
Site do grupo: http://pbjug.org/

Para sair da lista, envie um e-mail para pbjug-unsubscribe@...
=================================================================
-~----------~----~----~----~------~----~------~--~---


Re: Estruturando condicionais e blocos repetidos de código

by Flávio Santos-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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.mauricio@...>

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.barata@...>:
> 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




--~--~---------~--~----~------------~-------~--~----~
=================================================================
Site do grupo: http://pbjug.org/

Para sair da lista, envie um e-mail para pbjug-unsubscribe@...
=================================================================
-~----------~----~----~----~------~----~------~--~---


Re: Estruturando condicionais e blocos repetidos de código

by Thiago Ramalho :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


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.barata@...>:

> 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.mauricio@...>
>>
>> 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.barata@...>:
>> > 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
>>
>>
>
>
> >
>



--
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!"

--~--~---------~--~----~------------~-------~--~----~
=================================================================
Site do grupo: http://pbjug.org/

Para sair da lista, envie um e-mail para pbjug-unsubscribe@...
=================================================================
-~----------~----~----~----~------~----~------~--~---


Re: Estruturando condicionais e blocos repetidos de código

by Maurício Linhares :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


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.barata@...>:

> 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.mauricio@...>
>>
>> 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.barata@...>:
>> > 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
>>
>>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
=================================================================
Site do grupo: http://pbjug.org/

Para sair da lista, envie um e-mail para pbjug-unsubscribe@...
=================================================================
-~----------~----~----~----~------~----~------~--~---


Re: Estruturando condicionais e blocos repetidos de código

by Cleber Borges :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.
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.barata@...
Date: Sun, 8 Nov 2009 14:05:02 -0200
Subject: [PBJUG] Re: Estruturando condicionais e blocos repetidos de código
To: pbjug@...

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.mauricio@...>

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.
> 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




--~--~---------~--~----~------------~-------~--~----~
=================================================================
Site do grupo: http://pbjug.org/

Para sair da lista, envie um e-mail para pbjug-unsubscribe@...
=================================================================
-~----------~----~----~----~------~----~------~--~---


Re: Estruturando condicionais e blocos repetidos de código

by grasshopper-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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.barata@...>
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.mauricio@...>

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.barata@...>:
> 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







--~--~---------~--~----~------------~-------~--~----~
=================================================================
Site do grupo: http://pbjug.org/

Para sair da lista, envie um e-mail para pbjug-unsubscribe@...
=================================================================
-~----------~----~----~----~------~----~------~--~---