Visual Studio, que decepção

19 respostas
L

Estou postando aqui somente porque há algum tempo atrás li um post elogiando o IDE da Microsoft.

Não sou fanático por nenhuma plataforma e uso Windows 7 em casa, mas devo dizer honestamente que as IDEs de Java não devem em nada para o Visual Studio, e em alguns aspectos são até melhores.

Estou usando C e sinto falta das opções de refactoring, mas acredito que em .Net isso deve ser melhor (até porque é impossível ser pior). Exitem diversas pequenas coisas que fazem o editor do Eclipse melhor:

  • O Eclipse fecha automaticamente blocos. Quando você abre { ele insere o }. A mesma coisa para parenteses. Aparentemente a Microsoft acha que pode existir o caso de não se fechar um bloco de código :roll: ;
  • Formata automaticamente os comentários;
  • Tem inúmeros templates que constroem o código para você, assim como for, foreach, sysout, etc;
  • As referências são marcadas com outra cor quando o cursor está em cima, diferenciando assignment de reference;
  • Quando existe algum erro o editor marca a linha onde o erro está;
  • O Eclipse também dá sugestões de correção com Ctrl-1, seja o de usar algum nome alternativo (estilo Google “você quis dizer”), ou criar o método para você;
  • Embora o Visual Studio permita navegar pelas definições de código assim como o Eclipse, no Eclipse eu posso visualizar a definição de um método em uma caixa sem precisar abrir um novo arquivo;

Fora que o Visual Studio não implementa o padrão C99.

O Eclipse usa perspectivas, o que divide melhor as funções em diversas telas. No VS é uma tela só, dando a impressão de “zona”. A impressão é que coisas que estão na sua cara no Eclipse levam 2 ou 3 cliques no VS, como por exemplo o stack trace do debugger.

Fora que o compilador da Microsoft não dá warnings para coisas estúpidas, assim como assignment dentro de um if:

if (i =0) {
}

Levei alguns minutos debugando para descobrir esse erro, e no Eclipse isso não passaria.

19 Respostas

E

É notoriamente difícil criar IDEs para as linguagens C e C++ que sejam tão avançadas quanto para as linguagens Java e C#; as próprias linguagens não ajudam. (Em compensação, o C# foi pensado para ser usado com uma IDE, portanto ele tem muitos recursos sintáticos que são suportados corretamente na IDE).

O principal motivo é o uso de “#includes” e macros, que fazem o problema de criar uma auto-sugestão correta quase impossível.

Além disso, a própria definição da linguagem aceita tais barbaridades como

if (i = 0)

sem pestanejar, já que o tipo de dados aceito para a expressão do if é qualquer tipo numérico ou ponteiro - não há um requisito, como no Java, de que o tipo obrigatoriamente tenha de ser booleano (“bool” em C++). O máximo que dá para fazer é emitir um “warning”, mas se o compilador for muito rigoroso a respeito de warnings, você acaba ignorando todos, porque há muitos warnings estratosféricos também.

L

Tinha que ter no mínimo um warning. Isso é estúpido demais.

E

Programadores C que se prezam não usam apenas os warnings padrão do compilador (que já são muitos e acabam distraindo sua atenção); deixam os warnings ligados no máximo (no caso do gcc, -Wall -pedantic, no caso do Visual Studio, o warning nível 4 ou 5.

Além disso, usam algumas outras ferramentas, como o CppCheck ( http://sourceforge.net/apps/mediawiki/cppcheck/index.php?title=Main_Page )

E

A propósito, no caso do Visual Studio, o número do warning para essa tal construção (atribuição dentro de um if) é C4706, que está no nível 4:

http://msdn.microsoft.com/en-us/library/7hw7c1he(v=vs.80).aspx

V

http://visualstudiogallery.msdn.microsoft.com/en-us/d0d33361-18e2-46c0-8ff2-4adea1e34fef

Outro pacote legal é o DPack:
http://www.usysware.com/dpack/

Em C não existe um padrão formal para comentários como o javadoc. O Visual poderia ser implementado para formatar de acordo com o Doxygen.
No caso de usar C#, existe formatação automática para os comentários escritos na forma de xml.

O visual também tem. Dê uma clique com o botão direito e veja a opção “surround with”.
No caso do C#, há macros como essas que você descreveu também.

- Quando existe algum erro o editor marca a linha onde o erro está;

  • O Eclipse também dá sugestões de correção com Ctrl-1, seja o de usar algum nome alternativo (estilo Google “você quis dizer”), ou criar o método para você;
  • Embora o Visual Studio permita navegar pelas definições de código assim como o Eclipse, no Eclipse eu posso visualizar a definição de um método em uma caixa sem precisar abrir um novo arquivo;

Isso faz falta mesmo.
Parte desses recursos existe para C#.
Em C o buraco é mais embaixo, como o entanglement já explicou.

Dá sim:
c:\projetos\launcher\launcher\main.cpp(9): warning C4706: assignment within conditional expression

Mas para isso você deve configurar o Warning Level:
Botão direito no seu projeto->Properties->C/C+±>General
Altere a opção Warning Level de W3 para W4.

Agora, o que o entanglement falou também é muito importante.
O conceito das linguagens C e C++ são bem diferentes do Java. Nessas linguagens, você confia nas habilidades do programador e dá a ele o máximo de poder. Já o Java, assume o tempo todo que os programadores podem cometer erros. As IDEs refletem essa diferença.

Anyway, é normal que quando você mude de sua IDE favorita, você comece vendo só os problemas. Provavelmente você já tem um eclipse perfeitamente configurado, com seus plugins favoritos baixados, e já perdeu uma boa quantidade de tempo explorando vários dos submenus e recursos dele.

Aguarde até conseguir ver também as vantagens do Visual, pois leva tempo. Por exemplo, no Visual existe a possibilidade de voltar atrás algumas linhas durante a depuração, ou chegar até o nível do assembly, se necessário. Também há vários recursos interessantes, como code folding configurável.

O Visual também tem um ótimo profiler para C++ mas, assim como os plugins, não está disponível na versão express.

L

ViniGodoy:
O visual também tem. Dê uma clique com o botão direito e veja a opção “surround with”.
No caso do C#, há macros como essas que você descreveu também.

Aí já é uma questão de usabilidade. Como eu disse, tudo está 2 ou 3 cliques de distância, oculto em alguma opção. No Eclipse só Ctrl-espaço e ele já mostra os templates no mesmo lugar do código.

Vou tentar vê como o CDT do Eclipse está. Se for mais usável do que o VS é capaz que eu o utilize.

L

entanglement:

Programadores C que se prezam não usam apenas os warnings padrão do compilador (que já são muitos e acabam distraindo sua atenção); deixam os warnings ligados no máximo (no caso do gcc, -Wall -pedantic, no caso do Visual Studio, o warning nível 4 ou 5.

Além disso, usam algumas outras ferramentas, como o CppCheck ( http://sourceforge.net/apps/mediawiki/cppcheck/index.php?title=Main_Page )

C e C++ são linguagens distintas.

E pelo visto a Microsoft nem se importou e implementar o C corretamente.

Vi uns erros aqui nada a ver, depois que percebi que não posso declarar variáveis em qualquer parte do código, assim como C99 permite. Eu sei que o GNU C também não implementa o padrão C99 inteiramente, mas eles já tem isso (entre outras coisas).

Pelo amor de Deus, no século XXI e você é obrigado a declarar variáveis no começo do bloco. Isso me lembra Pascal.

V

Longino:
Aí já é uma questão de usabilidade. Como eu disse, tudo está 2 ou 3 cliques de distância, oculto em alguma opção. No Eclipse só Ctrl-espaço e ele já mostra os templates no mesmo lugar do código.

Vou tentar vê como o CDT do Eclipse está. Se for mais usável do que o VS é capaz que eu o utilize.

Estou falando que existem acesso a macros com teclas de atalho (as teclas são inclusive mostradas nos menus que indiquei).
Não me lembro quais são essas teclas pois não costumo a usar macros, mas tenho vários colegas que usam.

V

Outras opções são:

  1. Utilizar o QT Creator, que usa o compilador GNU;
  2. Associar o compilador GNU ao Visual.
M

Outras opções são:

  1. Utilizar o QT Creator, que usa o compilador GNU;
  2. Associar o compilador GNU ao Visual.

Dá pra usar outro compilador com o Visual Studio? Ou fala de criar projetos com Makefile usando o Visual Studio?

G

Também sempre achei o VS.NET “capenga” nesse aspecto de editor. E IDEs Java (ohh não, logo java) são bem mais práticas em editoração do que o VS.NET, quando falei IDE´s Java, entenda-se Eclipse, Netbeans e IDEA.

Gerar getter e setter no VS.NET é de campo em campo.

W

Desculpe disse isso, mas eu acho que eh vc que nao sabe usar o VS.

Tem sim, se vc digitar if e pressionar TAB, por exemplo, vc vai ter algo do tipo:

if (true)
{
                
}

Claro que formata automaticamente!! Se vc tem um simples metodo desse tipo:

public int SomaDoisNumeros(int numero1, int numero2) {

}

Se vc for na linha antes da assinatura do metodo e digita 3 baras ///, vc vai ter:

/// <summary>
/// 
/// </summary>
/// <param name="numero1"></param>
/// <param name="numero2"></param>
/// <returns></returns>
public static int SomaDoisNumeros(int numero1, int numero2) {

}

Nao entendi, o que mais tem eh template no VS!!! :slight_smile:
Tem templates para projetos, templates para diferentes formatos tipo, C# class, interface, javascript, XML. O que vc quer mais???

Ate onde eu sei o Editor do VS, marca quando alguma coisa esta errada e se vc mesmo assim compilar o codigo, vai mostrar o erro no “error list” se vc clicar no erro vai levar vc ate a linha que esta com problema.

Bem, VS tem um negocio chamado Intelisense que faz isso pra voce.

Tem o Class View no VS vc faz exatamente isso.

Longino:

Fora que o compilador da Microsoft não dá warnings para coisas estúpidas, assim como assignment dentro de um if:

if (i =0) {
}

Levei alguns minutos debugando para descobrir esse erro, e no Eclipse isso não passaria.


Tem certeza??? Acabei de testar aqui soh pra ter 100% certeza e o editor colocar uma linha vermelha embaixo do codigo com problema e novamente se vc compitar vai mostrar no Error List ai vc pode navegar ate a linha com problema. Precisa mais do que isso??

Aconselho esse livro aqui:

//Daniel

E

A conclusão a que posso chegar é que o Longino está usando o Visual Studio 6.0 (lançado em 1998 ) e está tendo de dar manutenção em um sistema em VB 6 -a ha ha (a propósito, sistemas com componentes COM+ em VB 6 não são raros e na verdade ainda existem e dão bastante manutenção. Onde eu trabalho tem um andar só com programadores que dão manutenção a tais sistemas :frowning: )

P

boa discussão. bom conhecimento técnico dos presentes. aprendi bastante! parabéns a todos. :wink:

V

Nós reescrevemos uma dll com+ em VB6 aqui em uma static lib em C++.
Agora, além de ser portável para dispositivos móveis, PC, linux, mac, atari e até cafeteiras, nunca mais tivemos dores de cabeça.

H

Longino:

C e C++ são linguagens distintas.

E pelo visto a Microsoft nem se importou e implementar o C corretamente.

Vi uns erros aqui nada a ver, depois que percebi que não posso declarar variáveis em qualquer parte do código, assim como C99 permite. Eu sei que o GNU C também não implementa o padrão C99 inteiramente, mas eles já tem isso (entre outras coisas).

Pelo amor de Deus, no século XXI e você é obrigado a declarar variáveis no começo do bloco. Isso me lembra Pascal.

Programador C que se preze não usa IDE.

V

Isso, usa VI e transforma C na verdadeira “programação orientada à cabelos no peito”.

F

Eu me amarro em C. Acho muito maneiro.
Mas tem duas coisas que não suporto em muitos programadores de C (espero que não sejam maioria):

1º: Colocar uma letrinha de A-Za-z como nome de variável, gerando uma verdadeira sopa de letrinhas tensa de compreender;
2º: Achar que programador é o cara que programa em bloco de notas.

Não sei que beleza tem nisso… Devem se achar os hackers por isso… Sei lá…

T

Hermanoz:
Longino:

C e C++ são linguagens distintas.

E pelo visto a Microsoft nem se importou e implementar o C corretamente.

Vi uns erros aqui nada a ver, depois que percebi que não posso declarar variáveis em qualquer parte do código, assim como C99 permite. Eu sei que o GNU C também não implementa o padrão C99 inteiramente, mas eles já tem isso (entre outras coisas).

Pelo amor de Deus, no século XXI e você é obrigado a declarar variáveis no começo do bloco. Isso me lembra Pascal.

Programador C que se preze não usa IDE.

Verdade, programador que se preza usa borboletas: http://xkcd.com/378/

Me sinto mal em ter que dizer isso mas: aviso de alto teor de sarcasmo acima.

Criado 2 de maio de 2012
Ultima resposta 3 de mai. de 2012
Respostas 19
Participantes 10