我正在考虑将许多大的(1000+行)方法重构为好的块,然后可以适当地进行单元测试。
这让我开始思考调用堆栈,因为我的许多分解块中都有其他重构块,并且我的大型方法很可能已被其他大型方法调用。
我想打开这个进行讨论,看看重构是否会导致调用堆栈问题。我怀疑它在大多数情况下都不会,但想知道重构的递归方法,以及是否有可能在不创建无限循环的情况下导致堆栈溢出?
发布于 2009-04-27 16:03:00
除了递归,我不会担心调用堆栈问题,直到它们出现(它们可能不会出现)。
关于递归:无论它是如何实现的,都必须仔细实现和仔细测试,所以这一点也不会有什么不同。
发布于 2009-04-27 16:03:45
我想这在技术上是可行的。但我不会担心的,除非我在测试代码时实际发生了这种情况。
发布于 2009-04-27 16:04:10
当我还是个孩子的时候,计算机有64K的RAM,调用堆栈的大小很重要。
如今,这几乎不值得讨论。内存很大,堆栈帧很小,一些额外的函数调用很难测量。
例如,Python有一个人为的小调用堆栈,因此它可以迅速检测无限递归。默认大小为1000帧,但这可以通过简单的API调用进行调整。
在Python中遇到堆栈冲突的唯一方法是不加思考地处理Project Euler问题。即使这样,你通常也会在堆栈用完之前用完时间。(100万亿次循环所需的时间远远超过人的寿命。)
https://stackoverflow.com/questions/794171
复制相似问题