Was ist der optimale Kompromiss zwischen Refactoring und dem Call-Stack zu erhöhen?

StackOverflow https://stackoverflow.com/questions/794171

  •  16-09-2019
  •  | 
  •  

Frage

Ich suche eine Menge von großen (1000 Zeilen) Methoden in schöne Stücke an Refactoring, die dann kann Einheit entsprechend getestet werden.

Das fing an, mich über den Call-Stack zu denken, wie viele meiner rafactored Blöcke haben andere Refactoring Blöcke in ihnen, und meine große Methoden auch von anderen großen Methoden aufgerufen wurden.

würde Ich mag diese zur Diskussion öffnen, um zu sehen, ob Refactoring Stapel Probleme zu nennen führen kann. Ich bezweifle es in den meisten Fällen, aber gewundert über rekursive Methoden Refactoring und ob es möglich wäre, einen Stapelüberlauf zu verursachen, ohne eine Endlosschleife zu schaffen?

War es hilfreich?

Lösung

Rekursion Ohne, würde ich nicht über Call-Stack Probleme kümmern, bis sie erscheinen (was sie wahrscheinlich nicht).

In Bezug auf Rekursion. Es muss sorgfältig implementiert und getestet wird sorgfältig, egal wie es gemacht wird, so würde dies nicht anders sein

Andere Tipps

Ich denke, es ist technisch möglich. Aber nicht etwas, das ich würde darum kümmern, es sei denn, es passiert eigentlich, wenn ich meinen Code testen.

Als ich ein Kind war, und Computer hatte 64K RAM, die Anruf Stapelgröße wichtig.

Heutzutage ist es kaum der Rede wert. Der Speicher ist riesig, Stack-Frames sind klein, ein paar zusätzliche Funktionsaufrufe sind kaum messbar.

Als Beispiel hat Python einen künstlich kleinen Call-Stack, so dass es sofort eine unendliche Rekursion erkennt. Die Standardgröße ist 1000 Frames, aber dies ist einstellbar mit einem einfachen API-Aufruf.

Der einzige Weg, verwirrt des Stapels in Python zu laufen ist, ohne zu denken Projekt Euler Probleme zu bewältigen. Selbst dann, führen Sie in der Regel aus der Zeit, bevor Sie aus dem Stapel laufen. (100 Billionen Schleifen würden weit länger als eine menschliche Lebensdauer dauern.)

Ich denke, es ist höchst unwahrscheinlich, für Sie eine Stackoverflow ohne Rekursion zu erhalten, wenn Refactoring. Der einzige Weg, die ich sehen kann, dass dies geschehen würde, ist, wenn Sie die Zuweisung und / oder eine Menge von Daten zwischen Methoden auf dem Stapel selbst vorbei.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top