On Friday, August 3, 2012 at 5:23 PM, Francisco Berrocal wrote:
Senhores, li um post do Shannon Whitley hoje:Realmente, cada vez mais vejo pessoas usando a expressão "var", que nada maisé do que a tipagem implícita da variável declarada.Na minha opinião, ainda é uma tipagem forte, porém não mais declarada, e só agrega benefícios na leitura do código.Mas Shannon Whitley diz que a expressão é para preguiçosos, e deveria ser evitada.(Acho ele até um pouco extremista e polêmico deste ponto de vista).É importante citar também que plugins consolidados como o ReSharper trazem por default a declaração otimizada para o uso do var.(Configurável)E vocês o que acham deste modo de declaração? Afinal, o uso do "var" para declarar variáveis melhora a qualidade de entendimento do código?--Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.Para postar envie uma mensagem para dotnetar...@googlegroups.comPara sair do grupo envie uma mensagem para dotnetarchitec...@googlegroups.comPara mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
Talvez seja uma pergunta boba, mas qual é a vantagem de utilizar "var" em vez da tipagem específica?
Isso pode gerar uma melhora em processamento, desempenho.. etc?
Obrigao,
--
--
(PS: se eu não tenho crédito, pelo menos dê crédito ao Resharper...)
@dmyoko, entendo que queira enfatizar sua ideia, mas há outras maneiras de faze-la, por favor evitemos palavras de baixo calão, nem todos se sentem a vontade.Não entendi o "dê créditos ao ReSharper", você poderia explicar melhor, por favor?
--
--

--
Que tipo de escova? De dentes? Para escovar cavalo, tapete?
Enviado pelo meu iPhone.
Cara... DRY: Don't repeat your self.Quando não usar var? Quando o compilador (que é bem inteligente mesmo sendo o mais burro na cadeia entre o programador e o programa) não conseguir fazer a inferência (e que seja por alguma razão plausível, já que às vezes, até isso dá pra resolver).Por exemplo, o compilador é incapaz de inferir isto:var cliente;Se você não inicializa, ele não sabe inferir o que virá da inicialização. (E olha que até você, programador, que diz ter problemas de legibilidade, sabe inferir o tipo neste caso).var cliente = new Cliente(); (ajudou o compilador, e a si mesmo).Não existem malefícios (esse papo de que perde legibilidade é algo que tá sendo dito sem parar um pouco pra pensar). Volto a dizer: rubistas não possuem IDE, e a tipagem deles é totalmente dinâmica. Saber se o valor é string ou int nunca foi um problema pra eles - e com o duck typing, chega até ser vantajoso. Não só os rubistas com tipagem dinamica, mas também as linguagens funcionais, onde toda a tipagem é feita através de inferência... Scala, Javascript...Não existe problema de legibilidade. Existe problema de (mal-)costume. Para os que tem mal-costume, o resharper ajuda (ele te xinga se você não usar var).É redundância desnecessária. É retroceder duas versões do C# (quase 3). É ignorar o que ficou pra trás. (de certa forma, muita gente nunca saiu do c# 2.0... pra não contar os que nunca chegaram nele - e não usam generics até hoje).Todos os problemas relatados até aqui, não são problemas com o var... não diz respeito à inferência de tipos. Diz respeito, como sempre, a problemas de modelagem. Os casos citados: 5mil linhas de código, nomes grotescos, são problemas de modelagem e/ou design.
Atenciosamente,
Daniel Moreira Yokoyama.@dmyokoBlogs:Getting Sharper (C#, Arquitetura de Software e outras coisas mais)
http://gettingsharper.wordpress.com/Eis o Cristo... e jaz o Cristão (Cristianismo sem Religiosidade)
Stay Sharp!
Em 6 de agosto de 2012 16:17, Denis Bittencourt Muniz <deni...@gmail.com> escreveu:
Casos e casos. Em alguns casos sim, diminui a legibilidade do código, mas ser extremista e falar "gambiarra, NÃO USE!, etc", já é um exagero.Para tipos de dados, cujo nome é muito grande, uso o var. Em geral, prefiro referir com o tipo de dado, por mero costume.Onde uso bastante o "var": em construções de visões no MVC. Por mero costume, por acreditar não diminuir legibilidade do código, onde os nomes das variáveis, geralmente, claros para o contexto (a visão).Já em expressão de regra de negócio, desenvolvimento de lógica de negócio, gosto de usar a tipagem.
--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetar...@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitec...@googlegroups.com
Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
Vamos colocar mais lenha nessa fogueira então...Do site da Microsoft ( http://msdn.microsoft.com/en-us/library/bb384061(v=vs.110).aspx ):" However, the use of var does have at least the potential to make your code more difficult to understand for other developers. For that reason, the C# documentation generally uses var only when it is required. "Do forum da MSDN (http://social.msdn.microsoft.com/Forums/en-AU/netfxbcl/thread/33e48531-d8e8-48a0-80fe-27948a5957e1):"You should almost never use it outside LINQ and anonymous type declarations.Too often it is abused into a form of Generics, which is what intended to do.
If you know the type, then specify the type.
If you use it because you are unsure of the type, and you might change it, then you need better architecture."Não conheço o cara que disse isso mas ele diz na assinatura que é MVP.E discordo completamente de que se você faz isso: "A classe = new A(); " "você vai queimar no inferno seu redundante infiel"... mas se fizer "var classe = new A(); " "você vai para o céu querido fiel".E eu tenho a impressão que o VAR foi criado com o intuito de ser extensivamente utilizado com LINQ e seus tipos anônimos, o uso fora disso seria uma extrepolação do conceito que eles tinha em mente quando criaram essa tipagem.Mas quem sou eu.. sou apenas um ignorante burro que vai arder no mármore do inferno por cada vez que, vejam vocês, declarar uma variável explicitamente. Esses programadores .net não tem jeito mesmo..
Vamos colocar mais lenha nessa fogueira então...Do site da Microsoft ( http://msdn.microsoft.com/en-us/library/bb384061(v=vs.110).aspx ):" However, the use of var does have at least the potential to make your code more difficult to understand for other developers. For that reason, the C# documentation generally uses var only when it is required. "Do forum da MSDN (http://social.msdn.microsoft.com/Forums/en-AU/netfxbcl/thread/33e48531-d8e8-48a0-80fe-27948a5957e1):"You should almost never use it outside LINQ and anonymous type declarations.Too often it is abused into a form of Generics, which is what intended to do.
If you know the type, then specify the type.
If you use it because you are unsure of the type, and you might change it, then you need better architecture."Não conheço o cara que disse isso mas ele diz na assinatura que é MVP.E discordo completamente de que se você faz isso: "A classe = new A(); " "você vai queimar no inferno seu redundante infiel"... mas se fizer "var classe = new A(); " "você vai para o céu querido fiel".E eu tenho a impressão que o VAR foi criado com o intuito de ser extensivamente utilizado com LINQ e seus tipos anônimos, o uso fora disso seria uma extrepolação do conceito que eles tinha em mente quando criaram essa tipagem.Mas quem sou eu.. sou apenas um ignorante burro que vai arder no mármore do inferno por cada vez que, vejam vocês, declarar uma variável explicitamente. Esses programadores .net não tem jeito mesmo..
On Tuesday, August 7, 2012 7:10:12 PM UTC-3, Marcus Alexandre (Betim/Mg) wrote:
Quanto ao ReSharper, como disse no início da discussão a feature de recomendar 'var' a todas as declarações é configurável.
from "Intent Revealing Method Selector" in Kent Beck's "Smalltalk Best Practice Patterns":
Name your methods (and variables) based on the intent of the user (caller for methods). Describe the goal they would seek to fulfil, not the mechanism or algorithm used to fullfil it.
--
--
Senhores, li um post do Shannon Whitley hoje:
http://www.voiceoftech.com/swhitley/index.php/2012/08/stop-using-var/
Realmente, cada vez mais vejo pessoas usando a expressão "var", que nada mais
é do que a tipagem implícita da variável declarada.
Na minha opinião, ainda é uma tipagem forte, porém não mais declarada, e só agrega benefícios na leitura do código.Mas Shannon Whitley diz que a expressão é para preguiçosos, e deveria ser evitada.(Acho ele até um pouco extremista e polêmico deste ponto de vista).
É importante citar também que plugins consolidados como o ReSharper trazem por default a declaração otimizada para o uso do var.(Configurável)
(http://stackoverflow.com/questions/1873873/why-does-resharper-want-to-use-var-for-everything)
E vocês o que acham deste modo de declaração? Afinal, o uso do "var" para declarar variáveis melhora a qualidade de entendimento do código?
IFoo f1 = new SomeConcreteFoo();var f2 = (IFoo) (new SomeConcreteFoo());
Quando é que alguém vai precisar de um código destes? se você está atribuindo explicitamente para uma classe concreta use a classe concreta então.
Interface deve ser usada quando não conhecemos o tipo de retorno.
Cara, abstrai o conceito.Vou tentar refazer a leitura do exemplo, que alias, foi mto bom para demonstrar quando não utilizar.IFoo f1 = GetSomeConcreteFoo();var f2 = (IFoo)GetSomeConcreteFoo();Nesse caso não sabemos qual o tipo exato da classe concreta que o método retornará.E utilizar VAR fazendo cast no método não é legal.
Em que situação será útil a referência receber um tipo concreto do método, e guardar o tipo abstrato? Se o método devolve Array, qual a vantagem de tipar IEnumerable?