هل تنطبق "حالة ضد بيان GOTO" لـ Dijkstra بنفس القدر على الدعوة الحديثة لتغليفات الكود المسماة مثل وظائف؟

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

سؤال

لا أعرف كيف عملت في اليوم ، لذلك ليس لدي أي فكرة عما كان يشير إليه.

لكن ، خذ JS:

var x = 5;
var foo = function(y) { console.log(2); };
var y = 6;
foo(); // is this not in essence a goto statement?

إذا لم يكن الأمر كذلك ، فما الذي كان مختلفًا عن عبارات GOTO؟

هل عارض ديجكسترا JS على هذه الأسباب؟

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

المحلول

في مثالك ، تقوم بالاتصال بروتين فرعي بدلاً من نقل تدفق التحكم بشكل دائم ودائم (وهو ما goto يفعل).

إذا وضعت الرمز بعد foo();, ، سيتم تنفيذ هذا الرمز بعد foo() يسمى.

نصائح أخرى

لا ، هذا في جوهره بيان "gosub". هل قرأت الورقة الأصلية؟ تعرض Imho Dijkstra للإهانة من خلال حالة "تلطيخ" في جميع أنحاء الكود الخاص بك.

هذا هو بيان القفز ، وليس بيان غوتو. لذلك ، لا ينشئ رمز السباغيتي.

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