คำถามติดแท็ก goto

11
คำสั่ง“ goto” ของแมลงชนิดใดที่นำไปสู่ มีตัวอย่างที่สำคัญทางประวัติศาสตร์หรือไม่?
ฉันเข้าใจว่าช่วยไม่ให้ลูปซ้อนกันในลูป gotoคำสั่งบ่ายเบี่ยงและประจานว่าเป็นข้อผิดพลาดสไตล์แนวโน้มของการเขียนโปรแกรมเพื่อไม่เคยถูกนำมาใช้ Alt Text: "Neal Stephenson คิดว่ามันน่ารักที่จะตั้งชื่อป้ายกำกับ 'dengo' ของเขา" ดูการ์ตูนต้นฉบับที่: http://xkcd.com/292/ เพราะฉันเรียนรู้สิ่งนี้ก่อน ฉันไม่ได้มีความเข้าใจอย่างถ่องแท้หรือประสบการณ์เกี่ยวกับข้อผิดพลาดประเภทใดที่gotoนำไปสู่ ดังนั้นสิ่งที่เรากำลังพูดถึงที่นี่: ความไม่แน่นอน? รหัสที่ไม่สามารถเข้าใจได้หรืออ่านไม่ได้? ช่องโหว่ด้านความปลอดภัย? มีอะไรอีกบ้าง? ข้อผิดพลาดประเภทใดที่ทำให้ข้อความ "goto" นำไปสู่ มีตัวอย่างที่สำคัญทางประวัติศาสตร์หรือไม่?

12
นี่เป็นกรณีการใช้งานที่ดีสำหรับ goto ใน C หรือไม่?
ฉันลังเลที่จะถามสิ่งนี้เพราะฉันไม่ต้องการที่จะ "เรียกร้องการโต้วาทีการโต้เถียงหรือการอภิปรายเพิ่มเติม" แต่ฉันยังใหม่กับ C และต้องการที่จะได้รับข้อมูลเชิงลึกมากขึ้นเกี่ยวกับรูปแบบทั่วไปที่ใช้ในภาษา ฉันเพิ่งได้ยินความไม่พอใจgotoคำสั่งบางอย่างแต่เมื่อเร็ว ๆ นี้ฉันก็พบว่ามีกรณีการใช้งานที่ดีสำหรับมัน รหัสเช่นนี้: error = function_that_could_fail_1(); if (!error) { error = function_that_could_fail_2(); if (!error) { error = function_that_could_fail_3(); ...to the n-th tab level! } else { // deal with error, clean up, and return error code } } else { // deal with error, …

12
หลีกเลี่ยงวูดู `goto 'หรือไม่
ฉันมีswitchโครงสร้างที่มีหลายกรณีที่ต้องจัดการ การswitchดำเนินการมากกว่าenumที่ poses ปัญหาของรหัสที่ซ้ำกันผ่านค่ารวม: // All possible combinations of One - Eight. public enum ExampleEnum { One, Two, TwoOne, Three, ThreeOne, ThreeTwo, ThreeOneTwo, Four, FourOne, FourTwo, FourThree, FourOneTwo, FourOneThree, FourTwoThree, FourOneTwoThree // ETC. } ขณะนี้switchโครงสร้างจัดการแต่ละค่าแยกกัน: // All possible combinations of One - Eight. switch (enumValue) { case One: DrawOne; break; …

10
อะไรคือสิ่งที่เลวร้ายมากเมื่อเทียบกับ goto เมื่อใช้กับกรณีที่ชัดเจนและเกี่ยวข้อง
ฉันได้รู้จักกันเสมอว่าgotoเป็นสิ่งที่ไม่ดีถูกขังอยู่ในห้องใต้ดินที่ใดที่หนึ่งไม่เคยที่จะมองเห็นได้ดี gotoแต่ผมวิ่งเข้าไปในตัวอย่างรหัสในวันนี้ว่าทำให้รู้สึกดีกับการใช้งาน ฉันมี IP ที่ฉันต้องตรวจสอบว่าอยู่ในรายการ IP หรือไม่จากนั้นดำเนินการกับรหัสต่อไปมิฉะนั้นจะเกิดข้อยกเว้น <?php $ip = '192.168.1.5'; $ips = [ '192.168.1.3', '192.168.1.4', '192.168.1.5', ]; foreach ($ips as $i) { if ($ip === $i) { goto allowed; } } throw new Exception('Not allowed'); allowed: ... ถ้าฉันไม่ได้ใช้gotoฉันก็ต้องใช้ตัวแปรบางอย่างเช่น $allowed = false; foreach ($ips as $i) { if ($ip === …
40 php  goto 


7
สิ่งนี้แสดงให้เห็นถึงคำสั่ง goto หรือไม่?
ฉันเจอคำถามนี้เมื่อสองวินาทีก่อนและฉันดึงเนื้อหาบางส่วนออกจากที่นั่น: มีชื่อของโครงสร้าง 'break n' หรือไม่? สิ่งนี้ดูเหมือนจะเป็นวิธีที่ซับซ้อนอย่างไม่จำเป็นสำหรับคนที่จะต้องสั่งให้โปรแกรมแยกย่อยซ้อนกันสำหรับลูป: for (i = 0; i < 10; i++) { bool broken = false; for (j = 10; j > 0; j--) { if (j == i) { broken = true; break; } } if (broken) break; } ฉันรู้ว่าหนังสือที่ชอบพูดประโยค goto เป็นมารและฉันไม่ชอบมันเลย แต่สิ่งนี้แสดงให้เห็นถึงข้อยกเว้นของกฎหรือไม่? ฉันกำลังมองหาคำตอบที่จัดการกับ n-ซ้อนสำหรับลูป หมายเหตุ:ไม่ว่าคุณจะตอบว่าใช่, …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.