คำถามติดแท็ก control-structures

9
แนวคิดเรื่อง“ การกลับมาครั้งเดียวเท่านั้น” มาจากไหน
ฉันมักจะพูดคุยกับโปรแกรมเมอร์ที่พูดว่า " อย่าใส่ข้อความส่งคืนหลายรายการในวิธีเดียวกัน " เมื่อฉันขอให้พวกเขาบอกเหตุผลว่าทำไมสิ่งที่ฉันได้คือ " มาตรฐานการเข้ารหัสบอกเช่นนั้น " หรือ " มันสับสน " เมื่อพวกเขาแสดงวิธีการแก้ปัญหาให้ฉันด้วยคำสั่งการส่งคืนเดียวรหัสดูเหมือนจะไม่ดีสำหรับฉัน ตัวอย่างเช่น: if (condition) return 42; else return 97; " นี่น่าเกลียดคุณต้องใช้ตัวแปรเฉพาะที่! " int result; if (condition) result = 42; else result = 97; return result; การขยายโค้ด 50% นี้ทำให้โปรแกรมเข้าใจได้ง่ายขึ้นอย่างไร โดยส่วนตัวแล้วฉันพบว่ามันยากขึ้นเพราะพื้นที่ของรัฐเพิ่มขึ้นจากตัวแปรอื่นที่สามารถป้องกันได้ง่าย แน่นอนโดยปกติฉันจะเขียน: return (condition) ? 42 : 97; แต่โปรแกรมเมอร์จำนวนมากหลีกเลี่ยงผู้ปฏิบัติงานที่มีเงื่อนไขและชอบแบบยาว แนวคิดเรื่อง …

19
ฉันควรกลับจากฟังก์ชันก่อนหน้าหรือใช้คำสั่ง if [ปิด]
ฉันมักจะเขียนฟังก์ชันประเภทนี้ทั้งสองรูปแบบและฉันสงสัยว่ารูปแบบใดรูปแบบหนึ่งที่ต้องการมากกว่าอีกรูปแบบหนึ่งและทำไม public void SomeFunction(bool someCondition) { if (someCondition) { // Do Something } } หรือ public void SomeFunction(bool someCondition) { if (!someCondition) return; // Do Something } ฉันมักจะเขียนโค๊ดกับอันแรกเพราะนั่นเป็นวิธีที่สมองของฉันทำงานขณะเขียนโค้ดถึงแม้ว่าฉันคิดว่าฉันชอบอันที่สองเพราะมันจะจัดการกับข้อผิดพลาดในการจัดการทันทีและฉันอ่านง่ายขึ้น

20
`การแตก 'และ` การปฏิบัติการ' ที่แย่ ๆ
เจ้านายของฉันพูดถึงอย่างเมินเฉยว่าโปรแกรมเมอร์ที่ไม่ดีใช้breakและcontinueวนซ้ำ ฉันใช้มันตลอดเวลาเพราะมันสมเหตุสมผล ให้ฉันแสดงแรงบันดาลใจ: function verify(object) { if (object->value < 0) return false; if (object->value > object->max_value) return false; if (object->name == "") return false; ... } จุดที่นี่คือก่อนอื่นฟังก์ชันตรวจสอบว่าเงื่อนไขถูกต้องจากนั้นดำเนินการฟังก์ชันการทำงานจริง IMO เช่นเดียวกับลูป: while (primary_condition) { if (loop_count > 1000) break; if (time_exect > 3600) break; if (this->data == "undefined") continue; if (this->skip == …

4
ทำไมต้องใช้วงเล็บในการลองจับ
ในภาษาต่าง ๆ (อย่างน้อย Java คิดว่า C #?) คุณสามารถทำสิ่งต่าง ๆ เช่น if( condition ) singleStatement; while( condition ) singleStatement; for( var; condition; increment ) singleStatement; { }ดังนั้นเมื่อผมมีเพียงแค่หนึ่งคำสั่งผมไม่จำเป็นต้องเพิ่มขอบเขตใหม่ที่มี ทำไมฉันถึงลองทำไม่ได้? try singleStatement; catch(Exception e) singleStatement; มีอะไรพิเศษเกี่ยวกับลองจับซึ่งต้องมีขอบเขตใหม่หรือบางสิ่งบางอย่างเสมอ และถ้าเป็นเช่นนั้นคอมไพเลอร์ไม่สามารถแก้ไขได้หรือไม่

8
เหตุใด Clang / LLVM จึงเตือนฉันเกี่ยวกับการใช้ค่าเริ่มต้นในคำสั่ง switch ที่ครอบคลุมทุกกรณีที่แจกแจง?
พิจารณาคำสั่ง enum และ switch ต่อไปนี้: typedef enum { MaskValueUno, MaskValueDos } testingMask; void myFunction(testingMask theMask) { switch (theMask) { case MaskValueUno: {}// deal with it case MaskValueDos: {}// deal with it default: {} //deal with an unexpected or uninitialized value } }; ฉันเป็นโปรแกรมเมอร์ Objective-C แต่ฉันเขียนสิ่งนี้ใน C บริสุทธิ์สำหรับผู้ชมที่กว้างขึ้น Clang / LLVM …

2
ทำไมสกาล่าถึงกลับมา แต่ไม่หยุดพักและทำต่อไป
สกาล่าไม่มีbreakหรือcontinueดังนั้นพฤติกรรมวนรอบบางอย่างจึงใช้ความคิดอีกเล็กน้อย การสิ้นสุดลูปก่อนกำหนดต้องใช้การเรียกซ้ำแบบหางข้อยกเว้นหรือscala.util.control.Breaks(ซึ่งใช้ข้อยกเว้น) เหตุผลสำหรับเรื่องนี้ก็คือว่าgotoพวกเขาเป็นโครงสร้างการไหลที่ไม่ชัดเจนการไหลและสามารถทำได้ในวิธีที่ดีกว่าและน่าแปลกใจน้อยกว่า returnแต่ดูเหมือนขัดแย้งกันเหล่านั้นสามารถนำมาใช้สำหรับ เหตุใดสกาล่าจึงละเว้นbreakและcontinueไม่ทำเช่นนั้นreturn?

22
โครงสร้างการควบคุมทางเลือกใดที่มีประโยชน์ที่คุณรู้ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา คำถามที่คล้ายกันถูกปิดใน SO บางครั้งเมื่อเราเขียนโปรแกรมเราพบว่าโครงสร้างการควบคุมบางอย่างจะมีประโยชน์มากสำหรับเรา แต่ไม่สามารถใช้ได้โดยตรงในภาษาการเขียนโปรแกรมของเรา โครงสร้างการควบคุมทางเลือกใดที่คุณคิดว่าเป็นวิธีที่มีประโยชน์ในการจัดระเบียบการคำนวณ เป้าหมายที่นี่คือการได้รับวิธีการคิดใหม่เกี่ยวกับการสร้างโค้ดเพื่อที่จะปรับปรุงการแยกและการใช้เหตุผล คุณสามารถสร้างไวยากรณ์ / ความหมายที่ปรารถนาไม่พร้อมใช้งานในขณะนี้หรืออ้างอิงโครงสร้างการควบคุมที่รู้จักน้อยในภาษาการเขียนโปรแกรมที่มีอยู่ รู้รอบควรให้แนวคิดสำหรับภาษาการเขียนโปรแกรมใหม่หรือปรับปรุงภาษาจริง คิดว่านี่เป็นการระดมสมองดังนั้นโพสต์สิ่งที่คุณคิดว่าเป็นความคิดที่บ้า แต่มันสามารถทำงานได้ในบางสถานการณ์ มันเกี่ยวกับการเขียนโปรแกรมที่จำเป็น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.