Les IDE modernes ont beaucoup d'astuces pour aider à l'écriture de code, à la refactorisation, à la recherche. Tous ces éléments sont très utiles, mais rarement aucun d'entre eux ne ressemble à une véritable «magie» et me fait penser «Wow! Comment cela a-t-il été compris?
Pouvez-vous nommer des fonctionnalités impressionnantes d'automatisation de code IDE (ou d'autres) qui vous ont époustouflé la première fois que vous les avez vues?
ide
automation
serg
la source
la source
Réponses:
Débogage arrière
Visual Studio 2010 (et maintenant 2012) me permet de déboguer vers l'arrière avec IntelliTrace.
Plus jamais je n'aurai à revivre le moment où j'ai frappé F10 une fois de plus et à recommencer le débogage.
la source
Compléter le code
Quand tout ce que vous avez vu est un éditeur de texte, c'est impressionnant
la source
La capacité de ReSharper à deviner ce que je veux une variable nommée continue de m'étonner. Voici un exemple très simple mais vous avez l'idée.
la source
foreach(var matche in regex.Matches(str))
. Définit égalementmatche
comme unobject
plutôt qu'unMatch
, pas très utile.MatchCollection
s'agit d'une collection non typée. Pour de bonnes collections,var
fonctionne très bien. (Je n'aime toujours pas ça cependant)J'ai été très impressionné par les outils de refactoring d'Eclipse lorsque je les ai rencontrés pour la première fois. La possibilité d'extraire des méthodes (qui, lorsque vous apprenez une meilleure conception est un phénomène courant) à partir d'un gros morceau de code et de tout gérer pour moi était assez cool.
la source
Bulles de code. http://www.andrewbragdon.com/codebubbles_site.asp
J'adore Visual Studio et Eclipse pour les outils qu'ils me donnent pour changer le code, mais Code Bubbles m'excite vraiment de pouvoir naviguer et afficher mon code. Dommage que ce ne soit pas accessible au public = - {
la source
L'environnement de programmation le plus impressionnant dont j'ai jamais entendu parler est le système d'exploitation Genera.
Vous pouvez cliquer sur n'importe quel widget du système de fenêtrage et obtenir une lecture complète du code source et de la documentation de l'article. Étant un langage de programmation dynamique (Lisp), vous pouvez modifier la source du widget à la volée.
ZMACS du monde Lisp Machine est toujours considéré comme un meilleur éditeur que Emacs, qui est un environnement d'éditeur sans homologue.
la source
Affichage visuel de la structure du programme (programmes / fonctions / routines / ...)
la source
Capacité de ReSharper à refactoriser. En toute divulgation, je suis peut-être derrière la courbe ici car je pense que Java avec Eclipse a ce type de fonctionnalité depuis un certain temps, mais je ne travaille pas régulièrement avec Java.
Le delta de capacité que ReSharper ajoute à Visual Studio est si grand, c'est incroyable. Je sais que je ressemble à une annonce, mais je ne pense pas que je pourrais revenir à l'utilisation d'une installation Visual Studio standard sans ReSharper.
Plus généralement, une compréhension sémantique du code ferait battre le pantalon d'un ancien éditeur de texte ordinaire. Cela conduit à des choses comme "trouver les usages de la variable" ou "la fonction en ligne" ou "la possibilité d'utiliser un modèle idiomatique", etc.
la source
Débogueur de Smalltalk:
Il est parfaitement normal dans Smalltalk de passer la plupart de son temps à écrire du code depuis le débogueur.
(Je me souviens d'avoir été époustouflé en exécutant une méthode, en voyant quelque chose de mal, en la changeant et en exécutant à nouveau la méthode sans redémarrer l'application dans la journée avec Visual Age pour Java ... car VA4J a été écrit en Visual Age pour Smalltalk.)
Outil de recherche de méthodes de Smalltalk
Le Finder de méthodes vous permet de demander "quel message puis-je envoyer pour prendre ces paramètres et obtenir ce résultat?" Demandez-le
'abc'. 'def'. 'abcdeb'.
et il vous le dira'abc' , 'def' --> 'abcdef'
. Demandez-le#(0 1 2 3)
et ça dit#(0 1 2 3) sum --> 6
. * Expéditeurs-de, implémenteurs-de tout vous pour trouver tous (*) les expéditeurs d'un message ou tous les objets qui implémentent ce message.(*) Sauf lorsque vous faites des choses comme créer des noms de message lors de l'exécution:
self perform: (#foo, #bar)
pour vous envoyer le message#foobar
- dans ce cas, vous savez ce que vous faites, et cela ne vous dérange pas le potentiel de vous hisser sur votre propre pétard.la source
Whyline
Whyline pour Java m'a vraiment impressionné quand je l'ai vu. C'est un outil d'analyse dynamique qui vous permet de poser des questions sur la sortie du programme, et pas seulement du texte, mais aussi des graphiques. Par exemple, vous pouvez demander "pourquoi cette ligne était-elle rouge?" ou "pourquoi la méthode de peinture n'a-t-elle pas été appelée?"
Il fonctionne en instrumentant votre programme et en enregistrant un run. Par exemple, supposons qu'il existe un bogue que vous pouvez reproduire. Vous instrumentez votre programme avec Whyline, exécutez votre programme dans Whyline pour reproduire le bogue, puis lorsque vous quittez le programme, vous pouvez utiliser Whyline pour inspecter l'historique d'exécution.
Cet enregistrement et cette lecture ne sont pas nouveaux, mais la façon dont Whyline l'implémente est assez simple. Vous pouvez afficher l'historique en fonction d'événements spécifiques (par exemple, en se concentrant uniquement sur les événements de glissement de la souris ou uniquement sur les événements de touches). Il associe également la sortie à la partie du programme qui l'a imprimée, afin que vous puissiez naviguer de la sortie au code.
Pour fonctionner, il utilise le découpage de programme, afin que vous puissiez vous concentrer sur les parties du code qui sont réellement pertinentes. La CMU a maintenant un brevet dessus, et je ne sais pas quels sont leurs plans, mais j'espère que nous pourrons en voir plus en production. C'est un porc de mémoire, mais c'est probablement parce que c'est un prototype et qu'il peut s'améliorer.
Vous devriez voir la démo en ligne, mais vous devriez également l'essayer par vous-même pour obtenir l'expérience complète. Si quoi que ce soit, les démos en ligne sous-vendent l'idée.
la source
Je pense que la fonctionnalité IDE la plus impressionnante que j'ai vue est SyncEdit , qui AFAIK n'est disponible que dans Delphi.
la source
Ce que j'aimerais voir dans un IDE, ce sont ces fonctionnalités:
sheet[A3]
) et des dessins dans le code et y accéder comme n'importe quelle variable.if
conditions sous forme de tableau (recherche toujours le lien).la source
Vérification de type pour les langues dynamiques
Tant que votre code n'est pas trop «méta», un IDE pour Ruby ou Python devrait pouvoir exécuter une tâche en arrière-plan qui:
Je n'ai pas encore vu d'IDE qui fasse ça.
la source
Je suis un grand fan de la capacité multi-ligne alt click dans Vs2010, la meilleure chose que j'ai trouvée à propos de la nouvelle version.
la source
La construction automatique d'Eclipse est la fonctionnalité que j'admire le plus ... il y a 7 ans. Maintenant, je le prends pour acquis.
la source
Xcode 4 corrige les points-virgules et les fautes de frappe et utilise des flèches pour montrer comment une erreur s'est produite.
Par exemple:
Une flèche sera tirée de
[a release]
à[a length]
pour montrer pourquoi vous ne pouvez pas l'utiliser[a length]
.la source
Modèles de code et expansion, tels que CodeRush de DevExpress. En C #, a
DependencyProperty
est une difficulté majeure à créer, car la syntaxe peut devenir verbeuse, mais en tapant simplement "dp", vous obtenez quelque chose qui ressemble à un extrait de code où vous remplissez le type, le nom et la valeur par défaut, et tout le reste est fait - y compris ajouter toutes les instructions "using" nécessaires, et éventuellement des références de projet si la mémoire est suffisante.L'avantage est de créer vos propres modèles, pour le code que vous réutilisez ou réécrivez souvent, comme les implémentations simples de
INotifyPropertyChanged
propriétés, où donnez simplement au modèle le nom et le type de la propriété (si un autre expanseur ne l'a pas gérée) que vous souhaitez utiliser , et il gère le reste, y compris la création de la variable de support.la source
Pex fait une génération de tests unitaires automatisés plutôt cool. Il trace votre code, détermine les points de branchement, utilise un solveur conditionnel pour générer des entrées qui atteignent chaque branche possible, puis vous permet d'exporter les résultats sous forme de tests unitaires répétables. Il peut humilier du code de gestion de chaîne complexe.
la source
Dans Eclipse, générer automatiquement des SEtters et des getters, créer de la même manière des méthodes dans la classe implements à partir d'une interface
la source
IntelliJ Idea soutient JPA
Mentionnez que vous avez une DatabaseEntity:
vous avez maintenant quelques requêtes JPA
après un certain temps, vous voyez que vous avez fait une faute de frappe au sein de votre entité et que vous décidez de refactoriser lasname en lastName .
Cet IDE va également refactoriser la requête JPA.
la source