Che cosa è il commercio ottimale off tra il refactoring e aumentando lo stack di chiamate?

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

  •  16-09-2019
  •  | 
  •  

Domanda

Sto guardando refactoring un sacco di grandi dimensioni (1000+ linee) metodi in blocchi bello che può quindi essere testato unità a seconda dei casi.

Questa cominciato a pensare alla stack di chiamate, come molti dei miei blocchi rafactored avere altri blocchi refactoring all'interno di essi, e le mie grandi metodi possono anche essere stato chiamato da altri metodi di grandi dimensioni.

Mi piacerebbe aprire questo per la discussione per vedere se refactoring può portare a chiamare i problemi dello stack. Dubito che nella maggior parte dei casi, ma chiesti circa refactoring metodi ricorsivi e se sarebbe possibile causare uno stack overflow senza creare un loop infinito?

È stato utile?

Soluzione

Al netto ricorsione, io non mi preoccuperei di questioni stack di chiamate fino a quando non compaiono (cosa che probabilmente non sarà).

Per quanto riguarda la ricorsione:. Deve essere attentamente implementato e accuratamente testato, non importa come si fa quindi questo sarebbe diverso

Altri suggerimenti

Credo che sia tecnicamente possibile. Ma non qualcosa che avrei preoccuparsi a meno che effettivamente accade quando verifico il mio codice.

Quando ero un ragazzino, e computer aveva 64K di RAM, la dimensione dello stack chiamata importante.

Al giorno d'oggi, non è certo la pena di discutere. La memoria è enorme, stack frame sono piccole, alcune chiamate di funzione supplementari sono difficilmente misurabili.

Per fare un esempio, Python ha un artificialmente piccolo stack di chiamate in modo che rileva ricorsione infinita prontamente. La dimensione predefinita è di 1000 fotogrammi, ma questo è regolabile con una semplice chiamata API.

L'unico modo per conciliarsi con la pila in Python è quello di affrontare i problemi Project Euler senza pensare. Anche allora, in genere si esegue fuori del tempo prima che si esaurisca di stack. (100 trilioni di loop avrebbe preso molto più tempo di una vita umana.)

Credo che sia altamente improbabile per voi per ottenere uno StackOverflow senza ricorsione durante il refactoring. L'unico modo che posso vedere che questo sarebbe accaduto è che se si assegnano e / o passando un sacco di dati tra i metodi nello stack stesso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top