我通常置于该分配后仅使用一次的变量的值。我这样做是为了使调试更方便后,当我能够悬停在一个行,其中它以后使用的值。

例如,此代码不会让你悬停的getFoo()的值:

return GetFoo();

但是,这个代码:

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

此气味非常 YAGNI -esque ,如在功能的的的分配永远不会被使用,直到有人需要调试它的价值,这可能的不会发生的。如果不是的仅仅预见调试会话时,第一代码段以上保持的代码更简单。

你会如何编写代码来简单和易于使用的调试器之间的最佳平衡点?

有帮助吗?

解决方案

我不知道其他的调试器,但集成的Visual Studio调试器会报什么从“汽车”窗口中的函数返回;一旦你跨过return语句,返回值显示为“[函数名]返回”与返回的任何值的值。

GDB支持相同的功能,以及;该“结束”命令执行当前函数的其余部分,并打印的返回值。

这是一个非常有用的功能,我会感到惊讶,如果大多数其他调试器的没有的支持此功能。

至于更一般的“问题”,“调试程序,只有变量,”他们真的调试器只?我倾向于认为使用良好命名的临时变量都可以显著提高代码的可读性也。

其他提示

另一种可能性是学习不够汇编程序,你可以阅读你的编译器生成的代码。与该技术人员,就可以计算出被保持在那里的值被(在寄存器中,在存储器中),并看到的值,而无需将其存储在变量中。

如果你是以往任何时候都需要调试一个优化的可执行这个技能是非常有用的。优化器可以生成代码,从你怎么写这样的符号调试是没有帮助的显著不同。

另一个原因,你并不需要在Visual Studio调试器的中间变量是可以评估在监视窗口和立即窗口的功能。对于监视窗口,只需简单地突出显示要评估的声明,并将其拖动到窗口。

我认为它是不值得担心。由于有一个在典型情况下,没有运行时开销,大发雷霆。我认为,打破复杂的语句转换成多个简单的语句通常会增加可读性。

我要离开了分配的直到需要它的。如果你从来没有碰巧在的代码位,想看看这个变量,你有没有避免不必要的混乱您的代码。当您在运行的需要,把它(它应该是一个微不足道的提取变量重构)。而当你与调试会话完成,摆脱它(内联变量)。如果你发现自己调试这么多 - 和这么多的在那个特定的点 - 你是厌倦重构来回,然后想办法避免的需要;也许更多的单元测试将帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top