|
View:
New views
11 Messages
—
Rating Filter:
Alert me
|
|
|
parametros final?olá pessoal, continuando com as dúvidas sobre boas práticas, me deparei com uma dúvida que confesso nunca ter visto em canto nenhum. Plugins como FindBug e PMD e tal, dizem para que eu transforme meus parametros em FINAL (claro que são apenas aqueles que não são modificados ao longo do método e tal) mas, mesmo assim.. isso é mesmo uma boa prática? devemos mesmo fazer isso? porque? que ganho nosso código tem ao fazer isso? obrigado. --~--~---------~--~----~------------~-------~--~----~ ================================================================= Site: http://pbjug.org/ Grupo: http://groups.google.com/group/pbjug - Para cancelar a sua inscrição neste grupo, envie um e-mail para pbjug-unsubscribe@... ================================================================= -~----------~----~----~----~------~----~------~--~--- |
|
|
Re: parametros final?Ele pede pra fazer isso porque é uma má prática "reatribuir" valores a um parâmetro de um método, então quando você coloca ele como final, não é mais possível fazer essa reatribuição. 2008/7/23 Tux Slack <slack.tux@...>: > olá pessoal, > > continuando com as dúvidas sobre boas práticas, me deparei com uma dúvida > que confesso nunca ter visto em canto nenhum. Plugins como FindBug e PMD e > tal, dizem para que eu transforme meus parametros em FINAL (claro que são > apenas aqueles que não são modificados ao longo do método e tal) mas, mesmo > assim.. isso é mesmo uma boa prática? devemos mesmo fazer isso? porque? que > ganho nosso código tem ao fazer isso? > > obrigado. > > > > -- Maurício Linhares http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/ (en) João Pessoa, PB, +55 83 8867-7208 --~--~---------~--~----~------------~-------~--~----~ ================================================================= Site: http://pbjug.org/ Grupo: http://groups.google.com/group/pbjug - Para cancelar a sua inscrição neste grupo, envie um e-mail para pbjug-unsubscribe@... ================================================================= -~----------~----~----~----~------~----~------~--~--- |
|
|
Re: parametros final?Por que uma má prática de programação? Aproveitando o ensejo... eu sempre tive esse dúvida. Eu sou um cara que gosta de escrever códigos compactos, sou realmente obsecado :-D Faço coisas do tipo: public int duplicaNumero(int valor) { valor = valor << 1; fazAlgumaOutraCoisaComValorDuplicado(valor); return valor; } Não vejo maldade nisso. Eu só não quero declarar outra variável desnecessariamente. Logicamente isso não pode ser feito quando o valor de entrada é usado em mais de um ponto no método, o que não é o caso. Faz sentido? Ou o argumento de legibilidade se aplica aqui? Flávio Roberto Santos http://www.ourgrid.org/~flavio 2008/7/23 Maurício Linhares <mauricio.linhares@...>: > > Ele pede pra fazer isso porque é uma má prática "reatribuir" valores a > um parâmetro de um método, então quando você coloca ele como final, > não é mais possível fazer essa reatribuição. > > 2008/7/23 Tux Slack <slack.tux@...>: >> olá pessoal, >> >> continuando com as dúvidas sobre boas práticas, me deparei com uma dúvida >> que confesso nunca ter visto em canto nenhum. Plugins como FindBug e PMD e >> tal, dizem para que eu transforme meus parametros em FINAL (claro que são >> apenas aqueles que não são modificados ao longo do método e tal) mas, mesmo >> assim.. isso é mesmo uma boa prática? devemos mesmo fazer isso? porque? que >> ganho nosso código tem ao fazer isso? >> >> obrigado. >> >> > >> > > > > -- > Maurício Linhares > http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/ (en) > João Pessoa, PB, +55 83 8867-7208 > > > > --~--~---------~--~----~------------~-------~--~----~ ================================================================= Site: http://pbjug.org/ Grupo: http://groups.google.com/group/pbjug - Para cancelar a sua inscrição neste grupo, envie um e-mail para pbjug-unsubscribe@... ================================================================= -~----------~----~----~----~------~----~------~--~--- |
|
|
Re: parametros final?talvez pra tipos primitivos não há problema. Já com objetos é mais problemático, visto que vc passa a referência do objeto como parâmetro, não uma cópia dela. É como num BigInteger, qd vc duplica ele, por exemplo, ele gera um novo BigInteger. Imagino que seja essa a boa prática... 2008/7/23 Flávio Santos <flavio.barata@...>: > > Por que uma má prática de programação? > Aproveitando o ensejo... eu sempre tive esse dúvida. > Eu sou um cara que gosta de escrever códigos compactos, sou realmente > obsecado :-D > > Faço coisas do tipo: > > public int duplicaNumero(int valor) { > valor = valor << 1; > fazAlgumaOutraCoisaComValorDuplicado(valor); > return valor; > } > > Não vejo maldade nisso. Eu só não quero declarar outra variável > desnecessariamente. > Logicamente isso não pode ser feito quando o valor de entrada é usado > em mais de um ponto no método, o que não é o caso. > Faz sentido? > Ou o argumento de legibilidade se aplica aqui? > > Flávio Roberto Santos > http://www.ourgrid.org/~flavio > > > 2008/7/23 Maurício Linhares <mauricio.linhares@...>: >> >> Ele pede pra fazer isso porque é uma má prática "reatribuir" valores a >> um parâmetro de um método, então quando você coloca ele como final, >> não é mais possível fazer essa reatribuição. >> >> 2008/7/23 Tux Slack <slack.tux@...>: >>> olá pessoal, >>> >>> continuando com as dúvidas sobre boas práticas, me deparei com uma dúvida >>> que confesso nunca ter visto em canto nenhum. Plugins como FindBug e PMD e >>> tal, dizem para que eu transforme meus parametros em FINAL (claro que são >>> apenas aqueles que não são modificados ao longo do método e tal) mas, mesmo >>> assim.. isso é mesmo uma boa prática? devemos mesmo fazer isso? porque? que >>> ganho nosso código tem ao fazer isso? >>> >>> obrigado. >>> >>> > >>> >> >> >> >> -- >> Maurício Linhares >> http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/ (en) >> João Pessoa, PB, +55 83 8867-7208 >> >> > >> > > > > -- Samuel Goldwyn - "I don't think anyone should write their autobiography until after they're dead." --~--~---------~--~----~------------~-------~--~----~ ================================================================= Site: http://pbjug.org/ Grupo: http://groups.google.com/group/pbjug - Para cancelar a sua inscrição neste grupo, envie um e-mail para pbjug-unsubscribe@... ================================================================= -~----------~----~----~----~------~----~------~--~--- |
|
|
Re: parametros final?Eu acho estranho, especialmente porque você opera e passa esse valor mais uma vez, em uma leitura rápida alguém pode achar que você está passando o mesmo parâmetro ou que está retornando o mesmo parâmetro sem fazer nada. Criar uma nova variável ajuda um bocado na legibilidade :) 2008/7/23 Flávio Santos <flavio.barata@...>: > > Por que uma má prática de programação? > Aproveitando o ensejo... eu sempre tive esse dúvida. > Eu sou um cara que gosta de escrever códigos compactos, sou realmente > obsecado :-D > > Faço coisas do tipo: > > public int duplicaNumero(int valor) { > valor = valor << 1; > fazAlgumaOutraCoisaComValorDuplicado(valor); > return valor; > } > > Não vejo maldade nisso. Eu só não quero declarar outra variável > desnecessariamente. > Logicamente isso não pode ser feito quando o valor de entrada é usado > em mais de um ponto no método, o que não é o caso. > Faz sentido? > Ou o argumento de legibilidade se aplica aqui? > > Flávio Roberto Santos > http://www.ourgrid.org/~flavio > > -- Maurício Linhares http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/ (en) João Pessoa, PB, +55 83 8867-7208 --~--~---------~--~----~------------~-------~--~----~ ================================================================= Site: http://pbjug.org/ Grupo: http://groups.google.com/group/pbjug - Para cancelar a sua inscrição neste grupo, envie um e-mail para pbjug-unsubscribe@... ================================================================= -~----------~----~----~----~------~----~------~--~--- |
|
|
Re: parametros final?Entao um public void setTemperatura() nao eh mais um simples modificador. ele vai ter que lancar excecoes. E eh verdade: pra objetos eh mais complicado. Se fosse com C++ ainda ia ter que rolar construtor de copia. /O 2008/7/23 Maurício Linhares <mauricio.linhares@...>: > > Eu acho estranho, especialmente porque você opera e passa esse valor > mais uma vez, em uma leitura rápida alguém pode achar que você está > passando o mesmo parâmetro ou que está retornando o mesmo parâmetro > sem fazer nada. > > Criar uma nova variável ajuda um bocado na legibilidade :) > > 2008/7/23 Flávio Santos <flavio.barata@...>: >> >> Por que uma má prática de programação? >> Aproveitando o ensejo... eu sempre tive esse dúvida. >> Eu sou um cara que gosta de escrever códigos compactos, sou realmente >> obsecado :-D >> >> Faço coisas do tipo: >> >> public int duplicaNumero(int valor) { >> valor = valor << 1; >> fazAlgumaOutraCoisaComValorDuplicado(valor); >> return valor; >> } >> >> Não vejo maldade nisso. Eu só não quero declarar outra variável >> desnecessariamente. >> Logicamente isso não pode ser feito quando o valor de entrada é usado >> em mais de um ponto no método, o que não é o caso. >> Faz sentido? >> Ou o argumento de legibilidade se aplica aqui? >> >> Flávio Roberto Santos >> http://www.ourgrid.org/~flavio >> >> > > > > -- > Maurício Linhares > http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/ (en) > João Pessoa, PB, +55 83 8867-7208 > > > > -- Otávio Augusto "A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects." Robert A. Heinlein --~--~---------~--~----~------------~-------~--~----~ ================================================================= Site: http://pbjug.org/ Grupo: http://groups.google.com/group/pbjug - Para cancelar a sua inscrição neste grupo, envie um e-mail para pbjug-unsubscribe@... ================================================================= -~----------~----~----~----~------~----~------~--~--- |
|
|
Re: parametros final?2008/7/23 Otávio Augusto <otavio.augusto@...>: > > Entao um public void setTemperatura() nao eh mais um simples > modificador. ele vai ter que lancar excecoes. Essa é a questão, ele nunca foi um simples modificador, ele é um método que por convenção vai alterar o estado de um objeto, como isso acontece depende da implementação do objeto aonde o método foi chamado. > E eh verdade: pra objetos eh mais complicado. Se fosse com C++ ainda > ia ter que rolar construtor de copia. Não entendi isso, qual o problema com os objetos? -- Maurício Linhares http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/ (en) João Pessoa, PB, +55 83 8867-7208 --~--~---------~--~----~------------~-------~--~----~ ================================================================= Site: http://pbjug.org/ Grupo: http://groups.google.com/group/pbjug - Para cancelar a sua inscrição neste grupo, envie um e-mail para pbjug-unsubscribe@... ================================================================= -~----------~----~----~----~------~----~------~--~--- |
|
|
Re: parametros final?Obrigado pela explicação pessoal..
2008/7/23 Maurício Linhares <mauricio.linhares@...>:
--~--~---------~--~----~------------~-------~--~----~ ================================================================= Site: http://pbjug.org/ Grupo: http://groups.google.com/group/pbjug - Para cancelar a sua inscrição neste grupo, envie um e-mail para pbjug-unsubscribe@... ================================================================= -~----------~----~----~----~------~----~------~--~--- |
|
|
Re: parametros final?ixi. Acho que respondi no thread errado. :P /O 2008/7/23 Tux Slack <slack.tux@...>: > Obrigado pela explicação pessoal.. > > > > 2008/7/23 Maurício Linhares <mauricio.linhares@...>: >> >> 2008/7/23 Otávio Augusto <otavio.augusto@...>: >> > >> > Entao um public void setTemperatura() nao eh mais um simples >> > modificador. ele vai ter que lancar excecoes. >> >> Essa é a questão, ele nunca foi um simples modificador, ele é um >> método que por convenção vai alterar o estado de um objeto, como isso >> acontece depende da implementação do objeto aonde o método foi >> chamado. >> >> > E eh verdade: pra objetos eh mais complicado. Se fosse com C++ ainda >> > ia ter que rolar construtor de copia. >> >> Não entendi isso, qual o problema com os objetos? >> >> >> -- >> Maurício Linhares >> http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/ (en) >> João Pessoa, PB, +55 83 8867-7208 >> >> > > > > > -- Otávio Augusto "A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects." Robert A. Heinlein --~--~---------~--~----~------------~-------~--~----~ ================================================================= Site: http://pbjug.org/ Grupo: http://groups.google.com/group/pbjug - Para cancelar a sua inscrição neste grupo, envie um e-mail para pbjug-unsubscribe@... ================================================================= -~----------~----~----~----~------~----~------~--~--- |
|
|
Re: parametros final?Olá pessoal,
eu concordo com Flávio, independente de ser tipo primitivo (ou não), a variável pode ser reutilizada desde que seja feito o uso correto, todo mundo que estudou java um pouquinho sabe que se passa é uma cópia do valor (tipo primitivo) ou da referência, e sabe que aquela será uma variável local que só tem aplicação dentro do método concordam? Acho que se esta recomendação isto não está no "Sun Java Code Convention", ter que redeclarar uma variável de parâmetro é falácia não acham? Teria mais algum argumento fora o da "legibilidade" para fazer isso? Alguem tem mais informações sobre as convenções java da sun a respeito disso? 2008/7/23 Flávio Santos <flavio.barata@...>
-- Fabrício Silva Epaminondas Student at Federal University of Campina Grande (Brazil) - UFCG Systems and Computing Department http://fabricioepa.googlepages.com/home --~--~---------~--~----~------------~-------~--~----~ ================================================================= Site: http://pbjug.org/ Grupo: http://groups.google.com/group/pbjug - Para cancelar a sua inscrição neste grupo, envie um e-mail para pbjug-unsubscribe@... ================================================================= -~----------~----~----~----~------~----~------~--~--- |
|
|
Re: parametros final?Não acho que haja nada além da legibilidade e de possíveis bugs que podem acontecer no método se algum pedaço do método fosse acessar a variável do método achando que ainda era o valor passado por parâmetro. Quando você reatribui a uma variável passada pelo método, especialmente se o nome dessa variável tem algum significado, você vai dificultar o entendimento de alguém que vá ler o código, porque ele vai achar que ali tem "temperatura" mas agora não é mais temperatura, agora é a média da temperatura, mas o nome continua temperatura, então além de lembrar da variável você tem que se lembrar que após uma dada linha do método essa variável não é mais o que ela se diz ser, já que você atribuiu um novo valor e consequentemente um novo significado a ela. Acho que qualquer ferramenta de análise estática de código, em qualquer linguagem de programação, vai dizer que isso é uma má prática, até mesmo em linguagens que tem parâmetros de entrada e saída, como C#, onde esse tipo de prática dificulta ainda mais a legibilidade do código. 2008/7/27 fabricio epaminondas <fabricioepa@...>: > Olá pessoal, > > eu concordo com Flávio, independente de ser tipo primitivo (ou não), a > variável pode ser reutilizada desde que seja feito o uso correto, todo mundo > que estudou java um pouquinho sabe que se passa é uma cópia do valor (tipo > primitivo) ou da referência, e sabe que aquela será uma variável local que > só tem aplicação dentro do método concordam? > > Acho que se esta recomendação isto não está no "Sun Java Code Convention", > ter que redeclarar uma variável de parâmetro é falácia não acham? Teria mais > algum argumento fora o da "legibilidade" para fazer isso? Alguem tem mais > informações sobre as convenções java da sun a respeito disso? > -- Maurício Linhares http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/ (en) João Pessoa, PB, +55 83 8867-7208 --~--~---------~--~----~------------~-------~--~----~ ================================================================= Site: http://pbjug.org/ Grupo: http://groups.google.com/group/pbjug - Para cancelar a sua inscrição neste grupo, envie um e-mail para pbjug-unsubscribe@... ================================================================= -~----------~----~----~----~------~----~------~--~--- |
| Free Forum Powered by Nabble | Forum Help |