2009-04-27 39 views
0

我正在考慮將很多大型(超過1000行)方法重構爲很好的塊,然後可以根據需要進行單元測試。重構和增加調用堆棧之間的最佳折衷是什麼?

這讓我開始思考調用堆棧,因爲我的很多rafactored塊內有他們的其他重構塊,和我的大方法很可能被其他大型方法調用。

我想打開這個討論,看看重構是否會導致調用堆棧問題。我懷疑它會在大多數情況下,但想知道重構的遞歸方法,以及是否有可能導致堆棧溢出而不創建無限循環?

回答

3

不包括遞歸,我就不會擔心調用棧的問題,直到他們出現(他們可能不會)。

關於遞歸:必須認真執行並仔細測試,不管它是如何做所以這將是沒有什麼不同。

0

我想這在技術上是可行的。但不是我擔心的事情,除非在測試我的代碼時實際發生。

0

當我還是一個孩子,電腦有64K的RAM時,調用堆棧的大小非常重要。

現在,這很難值得討論。內存很大,堆棧很小,幾個額外的函數調用幾乎不可測量。

作爲一個例子,Python有一個人爲的小調用棧,所以它能夠及時檢測到無限遞歸。默認大小爲1000幀,但可以通過簡單的API調用進行調整。

在Python中運行堆棧的唯一方法是無需考慮即可處理Project Euler問題。即便如此,在你用完之前,你通常會耗盡時間。 (百萬億循環將採取比人的壽命更長的時間。)

0

我認爲這是極不可能爲你重構時,得到一個計算器沒有遞歸。我可以看到發生這種情況的唯一方法是如果您在堆棧本身的方法之間分配和/或傳遞大量數據。

相關問題