ti-enxame.com

Quais são os truques mais impressionantes que um IDE poderia realizar com o código?

IDEs modernos têm muitos truques na manga para ajudar na escrita de código, refatoração e pesquisa. Todos esses são muito úteis, mas raramente algum deles parece uma "mágica" real e me faz pensar "Uau! Como descobri isso?"

Você pode citar algum recurso IDE automação de código (ou outro) impressionante que o surpreendeu na primeira vez que os viu?

18
serg

Depuração reversa

Visual Studio 2010 (e agora 2012) permite-me depurar para trás com IntelliTrace.

Nunca mais terei que reviver o momento em que apertei F10 muitas vezes e tive que reiniciar a depuração.

29
Ryan Hayes

ReSharper's capacidade de adivinhar o que quero uma variável chamada continua a me surpreender. Aqui está um exemplo muito simples, mas essa é a ideia.

alt text

16
mpenrow

Auto-completar de código

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

16
TheLQ

Fiquei muito impressionado com as ferramentas 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 ter tudo gerenciado para mim foi muito legal.

12
bedwyr

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

Eu amo o Visual Studio e o Eclipse pelas ferramentas que eles me fornecem para alterar o código, mas o Code Bubbles realmente me entusiasma por ser capaz de navegar e visualizar meu código. Que pena que não está disponível publicamente = - {

12
MBonig

O ambiente de programação mais impressionante de que 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 da documentação do item. Por ser uma linguagem de programação dinâmica (LISP), você pode editar o código-fonte do widget instantaneamente.

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

7
Paul Nathan

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

alt text

6
Rook

Capacidade do ReSharper de refatorar. Em divulgação completa, posso estar atrasado aqui, pois acho que Java com Eclipse teve esse tipo de funcionalidade por algum tempo, mas eu não trabalhe regularmente com Java.

O delta em 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 no topo.

De forma mais geral, um compreensão semântica do código iria bater nas calças de um editor de texto simples a qualquer dia. Isso leva a coisas como "encontrar usos de variáveis" ou "função embutida" ou "oportunidade de usar padrões idiomáticos", etc.

4
Mark Canlas

Whyline

Whyline para Java realmente me impressionou quando eu 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 estava vermelha?" ou "por que o método Paint não foi chamado?"

Ele funciona instrumentando seu programa e registrando uma corrida. Por exemplo, suponha que haja um bug que você possa reproduzir. Você instrumenta seu programa com Whyline, executa seu programa em Whyline para reproduzir o bug e, em seguida, quando fecha o programa, pode usar Whyline para inspecionar o histórico de execução.

Esta gravação e reprodução não são novas, mas a forma como Whyline as implementa é muito inteligente. Você pode visualizar o histórico de acordo com eventos específicos (por exemplo, focalizando apenas eventos de arrastar do mouse ou apenas eventos keydown). Também associa a saída a qual parte do programa a imprimiu, para que você possa navegar da saída ao código.

Para funcionar, ele usa divisão de programa, para que você possa se concentrar nas partes do código que são realmente relevantes. O CMU agora tem uma patente sobre ele e não sei quais são seus planos, mas espero que possamos ver mais dele em produção. É um devorador de memória, mas provavelmente porque é um protótipo e pode melhorar.

Você deve ver a demonstração online, mas também deve experimentá-la para obter a experiência completa. No mínimo, as demos online revelam a idéia.

4
Macneil

depurador de Smalltalk:

  • Acesso total a toda a pilha de chamadas (qual era esta variável de instância dos remetentes de objeto 3 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 em Smalltalk passar a maior parte do tempo escrevendo código de dentro do depurador.

(Lembro-me de ficar maravilhado ao executar um método, ver algo errado, alterá-lo e executar o método novamente sem reiniciar o aplicativo com Visual Age for Java ... porque VA4J foi escrito em Visual Age for Smalltalk.)

Localizador de método de Smalltalk

O Method Finder permite que você pergunte "qual mensagem devo enviar para obter esses parâmetros e obter esse resultado?" Pergunte a ele 'abc'. 'def'. 'abcdeb'. E ele lhe dirá 'abc' , 'def' --> 'abcdef'. Pergunte a ele #(0 1 2 3) e ele dirá #(0 1 2 3) sum --> 6. * Senders-of, implementors-of all you para localizar todos (*) os 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 mensagem para si mesmo #foobar - nesse caso você sabe o que está fazendo e não preste atenção ao potencial de se erguer em seu próprio petardo.

4
Frank Shearar

Acho que o IDE recurso mais impressionante que vi é SyncEdit , que AFAIK está disponível apenas em Delphi.

3
Mason Wheeler

Sou um grande fã da capacidade alt click multi-line no Vs2010 a melhor coisa que descobri sobre a nova versão.

2
rerun

Eclipse Auto Build é o recurso que mais admiro .... 7 anos atrás. Agora eu apenas considero isso certo.

2
nanda

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

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 porque você não pode usar [a length].

2
rightfold

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

  • Exibir o código da maneira que estou acostumado (independente de como ele é realmente formatado)
  • Permitir a incorporação de tabelas (digamos, uma planilha Excel onde posso ler os valores das células com sheet[A3]) e desenhos no código e acessá-los como qualquer variável.
  • Permita a omissão de colchetes e outros códigos desnecessários que estão lá apenas para fazer a análise feliz.
  • Pesquisar o código com um mecanismo parecido com o do Google (especialmente obtendo resultados de pesquisa em 35 ms)
  • Exibindo condições if complexas de forma semelhante a uma tabela (ainda pesquisando o 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 Java, a menos que um método com o mesmo nome já exista ou dependa de anotações)
2
Aaron Digulla

Verificação de tipo para idiomas dinâmicos

Contanto que seu código não fique muito 'meta', um IDE para Ruby ou Python deve ser capaz de 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 de classes incompatíveis com os métodos ausentes que você precisa para implementar

Eu ainda não vi um IDE que faz isso.

2
AShelly

Apoio do IntelliJ Idea ao 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ê vê que cometeu um erro de digitação em sua Entidade e decide refatorar lasname para lastName.

Isso IDE irá refatorar a consulta JPA também.

1
ckuetbach

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

1
GoodSp33d

Modelos de código e expansão, como DevExpress 'CodeRush. Em C #, um DependencyPropertyé um grande incômodo de criar, uma vez que a sintaxe pode ser prolixa, mas simplesmente digitar "dp" traz algo semelhante a um trecho onde você preenche o tipo, nome e valor padrão, e todos o mais é feito - incluindo a adição de quaisquer instruções "usando" necessárias e, possivelmente, referências de projeto se a memória não funcionar.

O benefício é criar seus próprios modelos, para o código que você frequentemente reutiliza ou reescreve, como implementações simples de propriedades INotifyPropertyChanged, onde simplesmente forneça ao modelo o nome e o tipo da propriedade (se outro expansor não tiver manipulado ) que você deseja usar e trata do resto, incluindo a criação da variável de apoio.

1
Hugo

Pex faz uma geração de teste de unidade automatizada muito legal. 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. Pode humilhar códigos complexos de manipulação de strings.

1
nlawalker