ما هي التجانس الأمثل بين إعادة تكوين وزيادة مكدس المكالمات؟

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

  •  16-09-2019
  •  | 
  •  

سؤال

أنا أبحث في إعادة صياغة الكثير من الأساليب الكبيرة (1000+ خطوط) في قطع لطيفة يمكن أن تكون بعد ذلك اختبارها حسب الاقتضاء.

بدأ هذا الأمر مني أفكر في مكدس المكالمات، حيث أن العديد من كتلتي الرائعة لها كتل أخرى تم إعادة شحنها داخلها، وقد تم استدعاء أساليبي الكبيرة بطرق كبيرة أخرى.

أرغب في فتح هذا للمناقشة لمعرفة ما إذا كان Refactoring قد يؤدي إلى استدعاء مشكلات المكدس. أشك في أنه سيعمل في معظم الحالات، لكنه تساءلت عن الأساليب العودية التي أعيد عددا وما إذا كان من الممكن أن تتسبب في تجاوز سعة مكدس دون إنشاء حلقة لا حصر لها؟

هل كانت مفيدة؟

المحلول

باستثناء العودية، لا تقلق بشأن مشاكل مكدس المكدس حتى تظهر (التي من المحتمل ألا حالها).

فيما يتعلق بالتأري: يجب أن يتم تنفيذها بعناية واختبارها بعناية بغض النظر عن كيفية القيام بذلك، لذلك لن يكون هذا مختلفا.

نصائح أخرى

أعتقد أنه ممكن من الناحية الفنية. ولكن ليس شيئا ما أقوم بالقلق بشأنه ما لم يحدث فعلا عندما أقوم باختبار التعليمات البرمجية الخاصة بي.

عندما كنت طفلا، وكان لدى أجهزة الكمبيوتر 64 ألف من ذاكرة الوصول العشوائي، فإن حجم مكدس المكالمات المسألة.

في الوقت الحاضر، بالكاد يستحق مناقشة. الذاكرة ضخمة، وإطارات المكدس صغيرة، وبعض المكالمات الدالة الإضافية لا يمكن قياسها بالكاد.

كمثال، لدى Python مكدس مكالمات صغير مصطنع بحيث يكتشف العودية اللانهائية على الفور. الحجم الافتراضي هو 1000 إطارات، ولكن هذا قابل للتعديل مع مكالمة API بسيطة.

الطريقة الوحيدة لتشغيل AFOUL من المكدس في Python هي معالجة مشكلات مرب البيان دون تفكير. حتى ذلك الحين، تنفد عادة من الوقت قبل نفاد المكدس. (ستستغرق 100 تريليون حلقات أطول من عمر الإنسان.)

أعتقد أنه من غير المرجح أن تحصل على Stackoverflow دون العودية عند إعادة الإنفاق. الطريقة الوحيدة التي أستطيع أن أرى أن هذا سيحدث هو إذا كنت تخصيص و / أو اجتياز الكثير من البيانات بين الأساليب الموجودة على المكدس نفسه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top