it-swarm-es.com

¿Cuáles son los trucos más impresionantes que un IDE podría realizar con el código?)

Los IDE modernos tienen muchos trucos bajo la manga para ayudar con la escritura de código, la refactorización y la búsqueda. Todos esos son muy útiles, pero rara vez alguno de ellos parece una verdadera "magia" y me hace pensar "¡Guau! ¿Cómo se resolvió eso?"

¿Puede nombrar alguna característica impresionante IDE de automatización de código (u otras) que le dejaron boquiabierto la primera vez que las vio?

18
serg

Depuración hacia atrás

Visual Studio 2010 (y ahora 2012) me permite depurar hacia atrás con IntelliTrace.

Nunca más tendré que revivir el momento en el que presioné F10 demasiadas veces y tuve que reiniciar la depuración.

29
Ryan Hayes

ReSharper's capacidad de adivinar lo que quiero una variable nombrada sigue sorprendiéndome. Aquí hay un ejemplo muy simple, pero te haces una idea.

alt text

16
mpenrow

Completar código

Cuando todo lo que has visto es un editor de texto, esto es impresionante.

16
TheLQ

Me quedé muy impresionado con las herramientas refactorización de Eclipse cuando las encontré por primera vez. La capacidad de extraer métodos (que, cuando estás aprendiendo a diseñar mejor es una ocurrencia común) de una gran cantidad de código y tener todo manejado por mí, fue bastante genial.

12
bedwyr

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

Me encanta Visual Studio y Eclipse por las herramientas que me brindan para cambiar el código, pero Code Bubbles realmente me entusiasma por poder navegar y ver mi código. Lástima que no esté disponible públicamente = - {

12
MBonig

El entorno de programación más impresionante del que he oído hablar es el sistema operativo Genera.

Puede hacer clic en cualquier widget del sistema de ventanas y obtener una lectura completa del código fuente y la documentación del elemento. Al ser un lenguaje de programación dinámico (LISP), puede editar la fuente del widget sobre la marcha.

Todavía se dice que ZMACS del mundo de LISP Machine es un mejor editor que Emacs, que es un entorno de editor sin igual.

7
Paul Nathan

Mostrar visualmente la estructura del programa (programas/funciones/rutinas/...)

alt text

6
Rook

La capacidad de ReSharper para refactorizar. En la divulgación completa, puedo estar detrás de la curva aquí ya que creo que Java con Eclipse ha tenido este tipo de funcionalidad durante algún tiempo, pero no trabaje habitualmente con Java.

El delta en la capacidad que ReSharper agrega a Visual Studio es tan grande que es increíble. Sé que sueno como un anuncio, pero no creo que pueda volver a usar una instalación estándar de Visual Studio sin ReSharper encima.

De manera más general, un comprensión semántica del código le sacaría los pantalones a un editor de texto simple en cualquier momento. Esto lleva a cosas como "encontrar usos de variable" o "función en línea" u "oportunidad de usar patrones idiomáticos", etc.

4
Mark Canlas

Whyline

Whyline para Java realmente me impresionó cuando lo vi. Es una herramienta de análisis dinámico que le permite hacer preguntas sobre la salida del programa, y ​​no solo el texto, sino también los gráficos. Por ejemplo, puede preguntar "¿por qué esa línea era roja?" o "¿por qué no se llamó al método Paint?"

Funciona instrumentando su programa y grabando una carrera. Por ejemplo, suponga que hay un error que puede reproducir. Instrumenta su programa con Whyline, ejecuta su programa en Whyline para reproducir el error y luego, cuando sale del programa, puede usar Whyline para inspeccionar el historial de ejecución.

Esta grabación y reproducción no es nueva, pero la forma en que Whyline las implementa es bastante hábil. Puede ver el historial de acuerdo con eventos específicos (por ejemplo, centrándose solo en los eventos de arrastre del mouse o solo en los eventos de teclado). También asocia la salida con la parte del programa que la imprimió, por lo que puede navegar desde la salida hasta el código.

Para funcionar, utiliza la división del programa, de modo que pueda concentrarse en las partes del código que son realmente relevantes. CMU ahora tiene una patente y no sé cuáles son sus planes, pero espero que podamos ver más en producción. Es un acaparador de memoria, pero es probable que sea porque es un prototipo y puede mejorar.

Debería ver la demostración en línea, pero también debería probarla usted mismo para obtener la experiencia completa. En todo caso, las demostraciones en línea subestiman la idea.

4
Macneil

Depurador de Smalltalk:

  • Acceso completo a toda la pila de llamadas (¿Cuál fue esta variable de instancia de ese objeto 3 remitentes en la pila?)
  • Edite el código bajo prueba en el depurador, reinicie y continúe la ejecución del programa como si nada.

Es perfectamente normal en Smalltalk pasar la mayor parte del tiempo escribiendo código desde el depurador.

(Recuerdo que me quedé impresionado al ejecutar un método, ver algo mal, cambiarlo y ejecutar el método nuevamente sin reiniciar la aplicación en el día con Visual Age para Java ... porque VA4J fue escrito en Visual Age para Smalltalk).

Buscador de métodos de Smalltalk

Method Finder te permite preguntar "¿qué mensaje puedo enviar para tomar estos parámetros y obtener este resultado?" Pregúntele 'abc'. 'def'. 'abcdeb'. Y le dirá 'abc' , 'def' --> 'abcdef'. Pregúntele #(0 1 2 3) y dice #(0 1 2 3) sum --> 6. * Remitentes-de, implementadores-de todos ustedes para encontrar todos (*) los remitentes de un mensaje o todos los objetos que implementan ese mensaje.

(*) Excepto cuando haces cosas como crear nombres de mensajes en tiempo de ejecución: self perform: (#foo, #bar) para enviarte el mensaje #foobar - en cuyo caso sabes lo que estás haciendo y no tenga en cuenta el potencial de levantarse sobre su propio petardo.

4
Frank Shearar

Creo que la característica más impresionante IDE que he visto es SyncEdit , que AFAIK solo está disponible en Delphi.

3
Mason Wheeler

Soy un gran admirador de alt clic capacidad de múltiples líneas en Vs2010 lo mejor que he encontrado sobre la nueva versión.

2
rerun

Eclipse Auto Build es la característica que más admiro ... hace 7 años. Ahora lo doy por sentado.

2
nanda

Xcode 4 corrige puntos y comas y tipos y usa flechas para mostrar cómo ocurrió un error.

P.ej.:

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

Se dibujará una flecha de [a release] A [a length] Para mostrar por qué no puede usar [a length].

2
rightfold

Lo que me gustaría ver en un IDE son estas características:

  • Muestre el código de la forma en que estoy acostumbrado (independientemente de cómo esté formateado)
  • Permitir incrustar tablas (digamos una hoja de cálculo de Excel donde puedo leer los valores de celda con sheet[A3]) y dibujos en el código y acceda a ellos como cualquier variable.
  • Permita omitir llaves y otro código innecesario que solo está ahí para hacer feliz al análisis.
  • Buscar el código con un motor similar a Google (especialmente obtener resultados de búsqueda en 35 ms)
  • Visualización de condiciones if complejas en forma de tabla (aún buscando en el enlace).
  • Herramientas de refactorización que pueden encontrar código similar, extraer las diferencias y reducirlas al máximo.
  • Soporte para la generación de código mientras se obedecen las reglas del lenguaje (piense: Cree todos los captadores y definidores para Java a menos que ya exista un método con el mismo nombre o que dependa de anotaciones)
2
Aaron Digulla

Comprobación de tipo para idiomas dinámicos

Siempre que su código no sea demasiado 'meta', un IDE para Ruby o Python debería poder ejecutar una tarea en segundo plano que:

  • para una función dada, determina todas las clases posibles que se pasarán como argumentos
  • para esas clases, garantiza que respondan a todos los métodos invocados por esa función
  • presenta una lista de las clases incompatibles con los métodos faltantes que necesita implementar

Todavía no he visto un IDE que haga esto.

2
AShelly

Compatibilidad de IntelliJ Idea con JPA

Mencione que tiene una DatabaseEntity:

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

ahora tienes algunas JPA-Queries

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

después de un tiempo, verá que cometió un error tipográfico dentro de su entidad y decide refactorizar lasname a lastName.

Eso IDE también refactorizará el JPA-Query.

1
ckuetbach

En Eclipse Generate SEtters y getters automáticamente, crea de manera similar métodos en la clase de implements desde una interfaz

1
GoodSp33d

Plantillas de código y expansión, como CodeRush de DevExpress. En C #, un DependencyProperty es un gran problema para crear, ya que la sintaxis puede volverse detallada, pero simplemente escribir "dp" muestra algo parecido a un fragmento donde se completa el tipo, el nombre y el valor predeterminado, y todo se hace lo demás, incluida la adición de cualquier declaración de "uso" necesaria, y posiblemente referencias de proyecto si la memoria no funciona.

El beneficio es crear sus propias plantillas, para el código que a menudo reutiliza o reescribe, como implementaciones simples de propiedades INotifyPropertyChanged, donde simplemente dé a la plantilla el nombre y el tipo de propiedad (si otro expansor no ha manejado it) que desea usar y se encarga del resto, incluida la creación de la variable de respaldo.

1
Hugo

Pex hace una generación de prueba unitaria automatizada bastante genial. Rastrea su código, determina puntos de bifurcación, utiliza un solucionador condicional para generar entradas que afectan a todas las bifurcaciones posibles y luego le permite exportar los resultados como pruebas unitarias repetibles. Puede humillar el código complejo de manejo de cadenas.

1
nlawalker