关于调试有两种思路。一个人说首先声明你的变量,然后分配...以便于调试。
int myInt;
myInt = GetSomething();
或者有一种思想流派认为它不干净,只需这样做:
int myInt = GetSomething();
我不明白第一个是如何帮助的。因为如果我在任何一种情况下都将调试点放在myInt上,它会给我一个我可以检查的值。
有人可以在调试时详细告诉我,第一种方法如何值得投入2行?我知道有些人发誓。
显然有时你必须先做第一次,因为你可能需要做的不仅仅是一次性设置,比如设置一个对象的属性。但除此之外,设置变量的一次性调用是我在这里专门讨论的内容。
答案 0 :(得分:7)
对我来说,只有2行才能检查return
值,即
int myInt = GetSomething();
return myInt; <===== breakpoint here
(而不是return GetSomething();
)
除此之外,断点/手表应该可以正常工作。在发布版本中,您应该发现编译器已消除了额外的变量。在分配之前,这个值是没有意义的,那么有什么目的可以看一下额外的一行?只需使用内联初始化(如果您选择,这也允许var
):
int myInt = GetSomething();
答案 1 :(得分:2)
我从未听说过那所学校。更多的代码行等于调试更多行,更多行要维护,更多行要逐步完成。
这始终是我的指导原则:正确,明确,简洁,快速。以该顺序。
int myInt;
myInt = GetSomething();
肯定是正确和明确的。但是
int myInt = GetSomething();
更简洁。牢度与此无关。因此,我赞成后者而不是前者。它并不接近。
有一个地方可以将一行划分为组件,可以使调试更容易。
int myInt = GetSomething();
return myInt;
通过调试器而不是时,更好
return GetSomething();
因为在后者中我不能轻易地检查返回值,而使用前者我可以。
答案 2 :(得分:1)
我以前从未听说过。如果在第一行设置断点,则执行时调试器会自动将其移动到下一行,因为在第一行上没有任何可调试的内容。
如果人们声称你说的话,我怀疑他们正在考虑这样的场景:
int i = SomeProperty.GetSomeValue().DoSomething();
这里调试起来比较“难”,因为在一行上调用了多个东西。
答案 3 :(得分:0)
谈话的后期,但我听说过那种思想流派。 对单个var没有意义,但它可以作为对大函数的展示。
BIG_FUNCTION = function () {
// variables
var isThis = true, // let me tell you about isThis
thatThing = 'that', // thatThing does that thing
anotherVariable = 0; // pretend it's specifically named
// functions
var doTheThing, // here's where I tell you what to expect
doFooBar, // and I'll explain each one
doBlargo; // so that you can get a feel for the big function
/* Function Definitions */
doTheThing = function(the) {
// ... etc
};
})();