Esses dias estávamos discutindo no .Net Architects sobre ferramentas, e sua relação custo x benefício. Em vez de me repetir, vou colocar aqui um pouco do que falei na thread, editado por brevidade. É apenas uma introdução, o que quero apresentar vem em seguida.

(…) Software é barato. Caro é hora de programação. O custo do software, se houver, dilui no custo das horas. Vamos fazer um teste de mesa rápido: um Visual Studio de R$ 2 mil reais (está por aí), e dois desenvolvedores de R$ 8 mil reais (aprox R$47,6 /h a 168 horas/mês). Se os desenvolvedores trabalharem 6 meses, fica aproximadamente 96 mil reais de hora de programação, mais 4 mil de licença, totalizando 100 mil reais. O Windows veio na máquina Dell ou HP que você comprou, OEM. O server você já deve ter, e o Team Foundation Server (TFS) vem de graça para até 5 usuários na versão workgroup. Então a hora subiu cerca de dois reais, para aproximadamente de R$ 49,6. Uma diferença de menos de 5%. E você vai poder usar o VS por mais uns anos, diluindo ainda mais. (…) Poupar na compra de licença do VS chega a ser tão absurdo quanto contratar o melhor cozinheiro do planeta e dar dez reais pra ele comprar os ingredientes. É igual a Ferrari contratar o Senna e jogar na mão dele um fusca, porque o carro é muito caro. Não faz o menor sentido.

Pois é, a produtividade do Visual Studio é absurdamente alta. Chutei o custo de mais ou menos 2 mil reais no VS, e isso pode variar, mas acho que não muito. De qualquer forma, o custo é muito baixo considerando a produtividade que ele entrega. Com 5% de custo a mais, você mais que dobra sua produtividade. Não vou nem comentar o custo de programas como o Microsoft SOL, ou as assinaturas MSDN, porque aí fica barato demais.

Todos estamos felizes com o Visual Studio, dificilmente alguém reclama da ferramenta e quando reclama é que ele consome muita memória. Que tal então ganhar pelo menos mais uns 30% de produtividade, por menos de quinhentos reais? Que tal anabolizar o Visual Studio? Pois é isso que o Resharper (R#) faz.

Eu não usava o R# até me tornar MVP. Quando fui nomeado fiquei sabendo que a JetBrains, fabricante da ferramenta, dava uma licença de graça para todos os MVPs. Já tendo ouvido falar muito da ferramenta, baixei uma versão completa de testes, gostei muito do que vi, daí pedi uma licença full. Já tens uns meses, e continuo ficando cada vez mais produtivo.

Não é brincadeira, a ferramenta aumenta pelo menos uns 30% na produtividade, mas estou desconfiado que é mais. Pra quem gosta de deixar o mouse de lado e machucar o teclado o R# é sensacional. Praticamente todos os atalhos estão ligados ao teclado, e você faz o que quiser sem colocar a mão no mouse.

Você ganha muito tempo na refatoração. Ele tem um módulo que facilita a execução de testes unitários. Tem um revisor de padrão de nomeação de variáveis. Torna os code snippets ainda mais poderosos, e acrescenta mais um monte. Auxilia na geração de código repetitivo, como implementação de interfaces (de maneira bem mais inteligente que a presente no VS), entre mais um monte de outras outras coisas. Ah, já ia esquecendo, ele habilita TDD no VS, tirando boa parte da fricção existente em uma linguagem estática, como o C#. Aliás, programar com R# faz você esquecer que o C# é uma linguagem estática, facilitando muito a refatoração, ao mesmo tempo que permite todo o poder de uma linguagem deste tipo.

Alguns exemplos:

Você renomeia uma classe, quer renomear o arquivo, basta clicar clicar na lampadinha, o R# renomeia o arquivo pra você:

R# renomeando arquivo

Esse é um dos mais legais. Você move uma classe no Visual Studio, ele percebe que ela está sob uma outra estrutura de projeto ou diretório, e sugere o rename do namespace:

R# renomeando namespaces

Ele não só renomeia os namespaces. Ele refatora todo e qualquer uso da classe, adicionando usings em todos os arquivos de classes que chamavam a classe alterada e não tinham elas nos usings ainda.

Repararam que os "usings" estão meio cinzas no exemplo anterior? É porque todo código desnecessário fica assim quando você usa o R#. Por exemplo, usar "this", ou um construtor inútil, e para remover, é só clicar na lampadinha:

R# limpando os usings

E se eu referencio uma classe que não está nos meus usings, ele percebe que ela existe, e coloca o using pra mim. Se está em outro projeto, ele já faz a referência, e adiciona o using, tudo de uma vez. Aqui referenciando uma classe no mesmo projeto.

R# consertando os usings automaticamente

Aqui a de outro projeto, onde ele mesmo adiciona a referência:

R# adicionando uma referência automaticamente

E é assim que ele habilita TDD também. Vocês viram que a segunda opção é criar uma nova Classe1, não é? Ele faz isso também com método, propriedades… Você escreve todo o código, e depois sai criando o que falta.

E a refatoração? Além do comum "Extract Method", que o VS já trás, ele tem mais alguns:

Refatorações do R#

Pouca coisa, né?

Para quem já usa, ou vai testar, tenho duas dicas de atalhos. O R# tem dezenas de atalhos pro teclado, mas há dois que você não pode esquecer. O primeiro é o ALT+Enter, que aparece na quarta figura daqui do post. Toda vez que ele percebe que você fez algo que está errado ou podia ser melhor e aparece a lampadinha amarela ou vermelha, respectivamente, é só entrar com um ALT+Enter, que ele te ajuda. O segundo é CTRL+SHIFT+R. Esse segundo trás o menu de contexto, com as refatorações possíveis no código selecionado, já com os atalhos anotados para da próxima vez você fazer direto:

Refatorando com atalho CTRL+SHIFT+R e R#

Aí é só escolher o que você precisa fazer na refatoração.

Quando estou em clientes costumo usar meu próprio Notebook, porque não é tão comum ainda o cliente ter o R#, então eu ganho em produtividade. E não é fácil programar sem ele quando você acostuma, você fica muito mais rápido… O engraçado é que é muito comum o cliente comprar o R# durante a minha consultoria. Depois de palestras também é bem comum eu ser questionado "que ferramenta é essa" que estou usando.

 

Passamos um tempão procurando melhores maneiras de codificar, estudando padrões, técnicas de acesso a dados, etc, etc. Produtividade é algo difícil de espremer, e os caras conseguiram.

O custo é bem tranquilo. A licença profissional completa (C# e VB) fica USD 350, a só de C# fica USD 250. Licenças para projetos open source são de graça. A licença pessoal vai de 50 dólares (VB) e USD 150 (C#) a USD 200 (C# e VB), e a licença acadêmica vai de zero a USD 50.

Em tempo: não ganho absolutamente nada para indicar a ferramenta. O faço porque a ferramenta é realmente excelente e realmente acho que vocês vão ganhar muito em usá-la. Para ajudar mais, eles me convidaram para fazer parte do programa de incentivo da ferramenta, então se alguém for comprar uma licença, fale comigo que consigo um cupom de 10% de desconto. Basta deixar um comentário aqui que eu entro em contato, ok? Mas antes de me pedir o cupom, baixe a ferramenta, avalie, e, se for realmente comprar, aí sim entre em contato.

Pra terminar, vejam o vídeo de uma sessão chamada Jedi coding. São só 8 minutos, onde você fica de boca aberta, o cara monta um sistema cheio de detalhes em 8 minutos. O nome "Jedi coding" não é à toa.

Quem já usa, ou vier a usar, comente aqui o que achou.