Pregunta

coloco comúnmente en valores de las variables que sólo se utilizan una vez después de la asignación. Hago esto para hacer más conveniente la depuración posterior, ya que soy capaz de flotar el valor en la línea uno donde se utiliza más adelante.

Por ejemplo, este código no deja se pasa el valor de getFoo ():

return GetFoo();

Pero este código:

var foo = GetFoo();
return foo; // your hover-foo is great

Esto huele muy YAGNI esque , como se funcionalidad del 's asignación foo no siempre va a ser utilizado hasta que alguien necesita para depurar su valor, lo que puede nunca sucederá . Si no fuera por el meramente previsto sesión de depuración, el primer fragmento de código anterior mantiene el código más simple.

¿Cómo escribir el código para mejor compromiso entre la simplicidad y facilidad de uso depurador?

¿Fue útil?

Solución

No sé sobre otros depuradores, pero el depurador de Visual Studio integrado a informar lo que se volvió de una función en la ventana de "Autos"; una vez que paso por la instrucción de retorno, el valor de retorno se muestra como "[nombre de la función] regresó" con un valor de cualquier valor que fue devuelto.

gdb admite la misma funcionalidad, así; el comando "acabado" ejecuta el resto de la función actual e imprime el valor de retorno.

Esta es una característica muy útil, me sorprendería si la mayoría de los otros depuradores ¿No soporte a esta función.

En cuanto al "problema" más general de "sólo las variables del depurador," ¿son realmente depurador de sólo? Tiendo a pensar que el uso de variables temporales bien llamada puede mejorar significativamente la legibilidad del código también.

Otros consejos

Otra posibilidad es la de aprender lo suficiente de programación en ensamblador que se puede leer el código de su compilador genera. Con esa habilidad, se puede averiguar dónde se encuentra detenido el valor (en un registro, en la memoria) y ver el valor sin tener que almacenarlo en una variable.

Esta habilidad es muy útil si alguna vez necesita depurar un archivo ejecutable optimizado. El optimizador puede generar código que es significativamente diferente de la forma en que lo escribió tal que la depuración simbólica no es útil.

Otra razón por la que no es necesario variables intermedias en el depurador de Visual Studio es que se puede evaluar la función en la ventana de visualización y la ventana Inmediato. Para la ventana de inspección, simplemente resaltar la declaración que usted quiere evaluado y arrastrarlo a la ventana.

Yo diría que no vale la pena preocuparse. Dado que no hay sobrecarga de tiempo de ejecución en el caso típico, se vuelven locos. Creo que romper las declaraciones complejas en simples declaraciones múltiples por lo general aumenta la legibilidad.

Me gustaría dejar de lado la asignación hasta que se necesite . Si nunca toca estar en ese trozo de código, que desean un vistazo a esa variable, usted no ha estorbado su código innecesariamente. Cuando se ejecuta a través de la necesidad, lo puso en (que debe ser un trivial Extraer variable refactorización). Y cuando haya terminado con la sesión de depuración, deshacerse de él ( En línea Variable ). Si usted se encuentra depuración tanto - y tanto en ese punto en particular - que estás cansado de refactorización de ida y vuelta, y luego pensar en maneras de evitar la necesidad; tal vez más pruebas de unidad ayudarían.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top