|
View:
New views
13 Messages
—
Rating Filter:
Alert me
|
|
|
Estruturando condicionais e blocos repetidos de códigoOi 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ódigoCara, 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ódigoFiquei 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@...>
-- 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ódigoThiago, 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@...>
--~--~---------~--~----~------------~-------~--~----~ ================================================================= 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ódigoAFinal 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@...>
--~--~---------~--~----~------------~-------~--~----~ ================================================================= 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ódigoOpa 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ódigoOpa 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@...>
--~--~---------~--~----~------------~-------~--~----~ ================================================================= 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ódigoSinceramente, 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ódigoNa 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@...>
--~--~---------~--~----~------------~-------~--~----~ ================================================================= 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ódigoAssim 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ódigoAh, 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ódigoeu 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@...>
--~--~---------~--~----~------------~-------~--~----~ ================================================================= 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ódigoFlá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... --~--~---------~--~----~------------~-------~--~----~ ================================================================= Site do grupo: http://pbjug.org/ Para sair da lista, envie um e-mail para pbjug-unsubscribe@...
|
| Free embeddable forum powered by Nabble | Forum Help |