Quais são os truques mais impressionantes que um IDE pode executar com o código? [fechadas]


18

Os IDEs modernos têm muitos truques nas mangas para ajudar na redação, refatoração e pesquisa de códigos. Tudo isso é muito útil, mas raramente um deles parece uma verdadeira "mágica" e me faz pensar "Uau! Como isso foi descoberto?"

Você pode nomear quaisquer recursos impressionantes de automação de código IDE (ou outros) que impressionaram sua mente na primeira vez em que você os viu?


3
Boa pergunta, gostaria de ver mais respostas ... Bounty!
Tamara Wijsman

Não sei se isso deve ser uma resposta, mas por que não vejo menções ao IntelliJ IDEA ?
Mark C

5
Programadores de verdade usam borboletas.
rightfold

Me impede de criar erros;)
Travis Christian

isso não deve ser fechada, a sua pergunta perfeito para aqui, IMHO
Nim Chimpsky

Respostas:


29

Depuração reversa

O Visual Studio 2010 (e agora 2012) permite depurar com o IntelliTrace.

Nunca mais terei que reviver o momento em que bati no F10 muitas vezes e preciso reiniciar a depuração.


2
Ainda não usei isso, mas quero.
ASHelly #

Também não usei isso (uso o RAD Studio para Delphi), mas parece um sonho tornado realidade. (Mas isso é uma resposta válida para esta questão É mais um recurso depurador do que um recurso de editor de código Bem, é uma parte do IDE, então talvez ...?.)
Andreas Rejbrand

+1000: Isso é muito útil.
Callum Rogers

Será que ela tem um VÊM comando :)?
Joonas Pulakka

2
o problema é que você só pode fazer isso com línguas MS (gerenciado) e não com C ++, por exemplo
Abrir o caminho

16

Conclusão de código

Quando tudo que você vê é um editor de texto, isso é impressionante


3
Na verdade, não é tão impressionante, você pode fazer isso apenas analisando um arquivo TAGS.
alternativa

2
O que eu gosto é de expansão hippie ... é profundamente mais útil para mim do que a conclusão de código.
Paul Nathan

2
@mathepic E exatamente quantas pessoas sabem fazer isso?
TheLQ

2
É impressionante se você está programando desde os dias do mainframe.
ASHelly #

4
Pessoal, se você não achou esta resposta atraente, vote em outra resposta, em vez de discordar nos comentários. É uma questão subjetiva, portanto as respostas dadas provavelmente também serão.
JBWilkinson

16

A capacidade do ReSharper de adivinhar o que eu quero que uma variável chamada continue a me surpreender. Aqui está um exemplo muito simples, mas você entendeu.

texto alternativo


1
Por favor você pode talvez dar alguns exemplos para aqueles que nunca vi isso em ação (me)
serg

9
Se o seu editor de texto pode substituí-lo por escrito código, eu tenho algumas más notícias ...
P Shved

3
foreach(var matche in regex.Matches(str)). Também define matchecomo um em objectvez de um Match, não muito útil.
precisa

1
@ Callum: Verdade, mas isso é apenas porque MatchCollectioné uma coleção sem tipo. Para coleções adequadas, varfunciona muito bem. (Eu ainda não gosto)
configurator

1
esse também é um recurso no eclipse.
NimChimpsky 4/10/10

12

Fiquei muito impressionado com as ferramentas de refatoração do Eclipse quando as encontrei pela primeira vez. A capacidade de extrair métodos (que, quando você está aprendendo um design melhor é uma ocorrência comum) de um grande pedaço de código e de ter tudo tratado para mim foi bastante interessante.


12

Bolhas de código. http://www.andrewbragdon.com/codebubbles_site.asp

Eu amo o Visual Studio e o Eclipse pelas ferramentas que eles me oferecem para alterar o código, mas o Code Bubbles realmente me excita por poder navegar e visualizar meu código. Pena que não está disponível ao público = - {


2
Uau. Aquele vídeo ... estou babando. Posso ter isso para C ++, por favor?
S10

Não posso dizer nada, mas uau.
Icode4food

1
+1 Embora eu não gosto da GUI atual, o conceito em si é bastante surpreendente ...
Tamara Wijsman

isso realmente funciona? caixas pequenas com parte do código. Para usá-lo, você precisaria de um monitor com o tamanho de uma parede.
IAdapter 19/10/10

Espero que isso nunca seja implementado no Emacs. Meu mindinho esquerdo não vai gostar disso.
rightfold

7

O ambiente de programação mais impressionante que eu já ouvi falar é o sistema operacional Genera.

Você pode clicar em qualquer widget no sistema de janelas e obter uma leitura completa do código fonte e documentação do item. Sendo uma linguagem de programação dinâmica (Lisp), você pode editar a fonte do widget rapidamente.

O ZMACS do mundo Lisp Machine ainda é considerado um editor melhor do que o Emacs, que é um ambiente de editor sem igual.


Meu primeiro trabalho de computação depois da universidade estava trabalhando com uma estação de trabalho simbólica (usando gêneros), acredite em mim, há uma razão pela qual ela não entendeu!
FinnNk

3
Oh, elaborar!
Mark C

sim, eu gostaria de saber por que o Genera não pegou tão bem
Yazz.com 15/03/11

@FinnNk: Talvez você possa elaborar?
Paul Nathan

6

Mostrando visualmente a estrutura do programa (programas / funções / rotinas / ...)

texto alternativo


Que editor é esse?
Paul Nathan


Má sorte ... (Você recebeu e-mails no momento em que tirou a captura de tela.) Mas esse não é um recurso muito avançado. Certamente, é provavelmente muito útil, mas não muito "impressionante" (nada).
Andreas Rejbrand 30/09/10

@Andreas Rejbrand - Desculpe Andreas, mas que e-mail? Que captura de tela? Receio não entender do que você está falando.
Rook

@Rook: Ele está falando sobre a imagem na sua resposta e a pequena caixa azul no canto inferior direito que parece ser uma notificação por email do Outlook. . .
Tim Goodman

4

Capacidade do ReSharper de refatorar.Na divulgação completa, posso estar atrás da curva aqui, pois acho que o Java com Eclipse tem esse tipo de funcionalidade há algum tempo, mas não trabalho regularmente com Java.

O delta de capacidade que o ReSharper adiciona ao Visual Studio é tão grande que é inacreditável. Sei que pareço um anúncio, mas acho que nunca poderia voltar a usar uma instalação padrão do Visual Studio sem o ReSharper na parte superior.

De um modo mais geral, um entendimento semântico do código superaria qualquer editor de texto comum a qualquer dia. Isso leva a coisas como "encontrar usos da variável" ou "função embutida" ou "oportunidade de usar padrão idiomático", etc.


Foi-me dito uma vez no trabalho: "Amigos não deixam amigos programarem sem o ReSharper".
precisa saber é o seguinte

4

Depurador do Smalltalk:

  • Acesso total a toda a pilha de chamadas (Qual foi a variável de instância desse objeto 3 remetentes na pilha?)
  • Edite o código em teste no depurador, reinicie e continue a execução do programa como se nada tivesse acontecido.

É perfeitamente normal no Smalltalk passar a maior parte do tempo escrevendo código de dentro do depurador.

(Lembro-me de ter ficado impressionado executando um método, vendo algo errado, alterando-o e executando o método novamente sem reiniciar o aplicativo no dia anterior com o Visual Age para Java ... porque o VA4J foi escrito no Visual Age para Smalltalk.)

Localizador de métodos de Smalltalk

O Method Finder permite que você pergunte "que mensagem devo enviar para pegar esses parâmetros e obter esse resultado?" Peça 'abc'. 'def'. 'abcdeb'.e ele lhe diz 'abc' , 'def' --> 'abcdef'. Pergunte #(0 1 2 3)e ele diz#(0 1 2 3) sum --> 6 . * Remetentes, implementadores - tudo para encontrar todos (*) remetentes de uma mensagem ou todos os objetos que implementam essa mensagem.

(*) Exceto quando você faz coisas como criar nomes de mensagens em tempo de execução: self perform: (#foo, #bar)para enviar a si mesmo a mensagem #foobar- nesse caso, você sabe o que está fazendo e não se importa com o potencial de se içar em sua própria petarda.


4

Whyline

Whyline para Java realmente me impressionou quando o vi. É uma ferramenta de análise dinâmica que permite fazer perguntas sobre a saída do programa, e não apenas texto, mas também gráficos. Por exemplo, você pode perguntar "por que essa linha era vermelha?" ou "por que o método de pintura não foi chamado?"

Ele funciona instrumentando seu programa e gravando uma corrida. Por exemplo, suponha que haja um erro que você possa reproduzir. Você instrumenta seu programa com o Whyline, executa o programa no Whyline para reproduzir o erro e, quando sai do programa, pode usar o Whyline para inspecionar o histórico de execução.

Essa gravação e reprodução não são novas, mas como a Whyline as implementa é muito boa. Você pode visualizar o histórico de acordo com eventos específicos (por exemplo, concentrando-se apenas nos eventos de arrastar o mouse ou apenas nos eventos de pressionamento de tecla). Ele também associa a saída com a parte do programa que foi impressa, para que você possa navegar da saída para o código.

Para funcionar, ele usa a divisão do programa, para que você possa se concentrar nas partes do código que são realmente relevantes. A CMU agora possui uma patente e não sei quais são seus planos, mas espero que possamos ver mais disso em produção. É um porco da memória, mas isso é provável porque é um protótipo e pode melhorar.

Você deve ver a demonstração on-line, mas também deve experimentá-la para obter a experiência completa. As demos online subestimam a ideia.


3

Eu acho que o recurso IDE mais impressionante que eu já vi é o SyncEdit , que o AFAIK está disponível apenas no Delphi.


Isso não está apenas renomeando membros? O Eclipse faz isso no local. Edit: Oh entendo, você pode fazê-lo dentro de uma seleção.
Matt Olenik 23/09/10

1
O Eclipse também possui (use o tempo todo). Útil - muito. Mágico - não tenho tanta certeza.
serg

@ Berg: Ah, o Eclipse também tem? Eu não saberia; Eu não uso Java. Eu sei que VS não tem isso ...
Mason Wheeler

@ Matt: Você pode fazê-lo dentro de uma seleção, e porque você pode fazê-lo dentro de uma seleção, você pode fazê-lo através tanto do arquivo que você deseja. Não é limitado pelo escopo ou outras restrições que um analisador de refatoração colocaria na renomeação de membros.
Mason Wheeler

O Netbeans também tem isso. Geralmente ctrl-r.
Alan Pearce

2

O que eu gostaria de ver em um IDE são esses recursos:

  • Exibir o código do jeito que estou acostumado (independentemente de como ele é realmente formatado)
  • Permitir incorporar tabelas (digamos uma planilha do Excel onde eu possa ler os valores das células sheet[A3]) e desenhos no código e acessá-los como qualquer variável.
  • Permita omitir chaves e outro código desnecessário que existe apenas para tornar a análise feliz.
  • Pesquisando o código com um mecanismo semelhante ao Google (especialmente obtendo resultados de pesquisa em 35ms)
  • Exibindo ifcondições complexas de maneira semelhante a uma tabela (ainda pesquisando no link).
  • Ferramentas de refatoração que podem encontrar código semelhante, extrair as diferenças e reduzi-las ao máximo.
  • Suporte para geração de código, obedecendo às regras de linguagem (pense: crie todos os getters e setters para classes Java, a menos que já exista um método com o mesmo nome ou dependa de anotações)

"Criar todos os getters e setters para classes Java a menos que um método com o mesmo nome já existe" Eu acho eclipse faz isso ...
Hila

Os objetivos "Exibir o código do modo como estou acostumado" e "Permitir omitir chaves" são compatíveis?
TRiG

@ Hila: Sim, mas o código é visível . O que eu gostaria é que o compilador apenas os gere quando compila a fonte Java; Eu não quero que eles bagunçam a fonte.
Aaron Digulla 6/10/10

@TRiG: IMHO, há uma grande sobreposição entre os dois. Recuo todo o meu código; os aparelhos são completamente inúteis.
Aaron Digulla 06/10/10

Se, talvez, o IDE salve chaves, mas não as exiba, isso poderá funcionar.
TRiG 6/10/10

2

Verificação de tipo para idiomas dinâmicos

Contanto que seu código não fique muito 'meta', um IDE para Ruby ou Python poderá executar uma tarefa em segundo plano que:

  • para uma determinada função, determina todas as classes possíveis que serão passadas como argumentos
  • para essas classes, garante que elas respondam a todos os métodos invocados por essa função
  • apresenta uma lista das classes incompatíveis com os métodos ausentes que você precisa implementar

Ainda não vi um IDE que faça isso.


Você quer dizer que não viu um IDE de R / P que faça isso ou algum IDE em geral?
Mark C

Eu nunca vi isso em lugar nenhum, mas também não pareci muito.
ASHelly #

RoelTyper de Roel Wuyts e Chuck de Lex Spoon fizeram / fizeram esse tipo de análise para Squeak.
precisa saber é o seguinte

Provavelmente, isso teria que ser construído em algum tipo de sistema de inferência de tipos, em um idioma que nunca foi projetado para inferência de tipos.
Lie Ryan


2

O Auto Build do Eclipse é o recurso que eu mais admiro .... 7 anos atrás. Agora eu apenas tomo como garantido.


A intellij está apenas recebendo isso na v12. Praticamente a única coisa eclipse faz melhor
Nim Chimpsky

2

O Xcode 4 corrige ponto-e-vírgula e erros de digitação e usa setas para mostrar como ocorreu um erro.

Por exemplo:

NSString *a = [[NSString alloc] init];
[a release];
int l = [a length];

Uma seta será desenhada de [a release]para [a length]para mostrar por que você não pode usar [a length].


Esse comportamento está relacionado ao analisador estático de clang. Você pode executá-lo como um comando separado e visualizar a saída em um navegador. Não há flechas chiques.
Will

1

Modelos de código e expansão, como CodeRush do DevExpress. No C #, a DependencyPropertyé um grande problema para criar, uma vez que a sintaxe pode ser detalhada, mas simplesmente digitar "dp" traz algo semelhante a um trecho em que você preenche o tipo, nome e valor padrão, e tudo o mais é feito - incluindo adicionando quaisquer instruções "using" necessárias e, possivelmente, referências de projeto se a memória servir.

O benefício está na criação de seus próprios modelos, para o código que você geralmente reutiliza ou reescreve, como implementações simples de INotifyPropertyChangedpropriedades, onde simplesmente fornece ao modelo o nome e o tipo da propriedade (se outro expansor não o tiver manipulado) que você deseja usar e lida com o restante, incluindo a criação da variável de backup.


1

O Pex faz uma geração automatizada de testes de unidade bastante bacana. Ele rastreia seu código, determina pontos de ramificação, usa um solucionador condicional para gerar entradas que atingem todas as ramificações possíveis e, em seguida, permite exportar os resultados como testes de unidade repetíveis. Ele pode humilhar códigos complexos de manipulação de strings.


Agradável! Embora, espero que seja usado mais para dados de teste geração de do que para o caso de teste completo ! [Dados de teste + Saída esperada = Caso de teste.] Ou seja, gerar automaticamente a saída esperada significa que na verdade não está testando o que você pensa que é. Isso precisaria ser verificado por alguém que conhece as especificações.
Macneil

1

No Eclipse, gerar SEtters e getters automaticamente, da mesma forma, crie métodos na classe implementa a partir de uma interface


1

Suporte do IntelliJ Idea à JPA

Mencione que você tem um DatabaseEntity:

@Entity
public class Customer{
[...]
String lasName;
[...]

agora você tem algumas consultas JPA

Query q = "selecct s from Customer c where c.lasName=:lastName"

depois de algum tempo, você digitou um erro de digitação em sua Entidade e decidiu refatorar o nome da las de las sobrenome .

Esse IDE também refatorará a consulta JPA.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.