2010-01-27 76 views
1

有2個關於調試的想法。一個說先聲明你的變量,然後賦值...以便於調試。加入聲明和作業或不加入...這是問題

int myInt; 
myInt = GetSomething(); 

或有思想的學校,說這僅僅是不乾淨的,只是這樣做:

int myInt = GetSomething(); 

我不明白是怎麼第一幫助。因爲如果我在兩種情況下都將調試點放在myInt上,它會給我一個值,我可以檢查。

那麼有人可以在調試時詳細告訴我,第一種方法值得放2行嗎?我知道有些人發誓。

顯然有時你必須做第一次,因爲你可能需要做的不僅僅是一次性的設置,比如設置一個對象的屬性。但除此之外,設置變量的一次性調用就是我在這裏特別提到的。

回答

7

的2線,對我來說,唯一有意義的檢查return值,即

int myInt = GetSomething(); 
return myInt; <===== breakpoint here 

(的return GetSomething();代替)

除此之外,斷點/手錶應該很好地工作。在發佈版本中,您應該發現編譯器已經消除了額外的變量。在分配之前,這個值是沒有意義的,所以有什麼目的有一個額外的線來看待?只需使用內聯初始化(如果您願意,還可以使用var):

int myInt = GetSomething(); 
1

我從來沒有聽說過那所學校。更多的代碼行等於需要更多的調試線路,更多的線路需要維護,更多的線路需要逐步完成。

這是我始終的指導原則:做到正確,講清楚,簡潔,快速。以該順序。

int myInt; 
myInt = GetSomething(); 

肯定是正確和清楚的。但是

int myInt = GetSomething(); 

更簡潔。牢度在這裏無關緊要。因此,我贊成後者而非前者。而且它並不近。

有一個將組件劃分成一行的地方可以使調試更容易。

int myInt = GetSomething(); 
return myInt; 

通過調試器行走比

return GetSomething(); 

時更好,因爲後者我不能輕易地檢查返回值,而與前者我可以。

1

我從來沒有聽說過。如果你在第一行設置了一個斷點,那麼當你執行時,調試器會自動將它移動到下一行,在第一個上沒有什麼可調試的。

如果有人聲稱你說什麼,我懷疑他們正在考慮的場景是這樣的:

int i = SomeProperty.GetSomeValue().DoSomething(); 

在這裏它的「難」調試,因爲不止一個東西被稱爲上一行。

0

對話遲到,但我聽說過那種思想流派。 對於單個變量沒有意義,但它可以作爲大函數的說明。

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 
    }; 
})();