Antipattern สำหรับกรณีคืออะไร


17

บทความ TDWTF วันนี้เริ่มต้นด้วยคำสารภาพจากผู้แต่ง:

ฉันไม่ทราบว่ารูปแบบการต่อต้าน For-Case นั้นเป็นอย่างไรจนกระทั่งเมื่อไม่นานมานี้เมื่อมีบทความที่ประณามว่าเป็นรูปแบบการต่อต้าน ฉันแน่ใจว่าฉันอาจจะใช้มันในบางจุด แต่ฉันไม่เคยรู้ว่ามันโดยชื่อ มันคิดว่าเป็น antipattern ตำราเรียนที่โดยทั่วไปหมายถึงความเข้าใจผิดของการวนรอบคำสั่งกรณีปัญหาการแก้ไขหรือการรวมกันของทั้งสาม

จากนั้นเขาก็ดำเนินการราวกับว่าผู้อ่านโดยธรรมชาติรู้ว่าสิ่งที่ต่อต้านรูปแบบกรณีเป็นโดยไม่ต้องอธิบายเพิ่มเติมใด ๆ

แต่ฉันทำไม่ได้! ฉันไม่ได้เห็น "น้ำท่วมของบทความ" ที่ Remy พูดถึงและการอ้างอิงที่สำคัญเท่านั้นที่ฉันสามารถหาได้ใน Google (นอกเหนือจากบทความของ Remy) คือโพสต์บล็อกโดย Raymond Chenเกี่ยวกับantipattern for-ifซึ่งเห็นได้ชัดว่าเกี่ยวข้อง . เขาไม่ได้กำหนด "รูปแบบการต่อต้านกรณี" เช่นกัน

"รูปแบบการต่อต้านกรณี" คืออะไรที่คนพวกนี้พูดถึงและอะไรที่ทำให้เป็นรูปแบบการต่อต้าน?



3
เป็นที่รู้จักกันทั่วไปว่าเป็น (และง่ายต่อการค้นหาผ่านเครื่องมือค้นหา) เป็นรูปแบบการต่อต้านแบบสวิตช์สลับ
David Arno

คำตอบ:


23

"รูปแบบ" ถูกนำมาใช้ในบทความ WTF รายวันก่อนหน้า แนวคิดพื้นฐานคือคุณมีการforวนรอบกับcaseด้านในของมันที่เลือกตามforตัวแปรดัชนีการวนรอบ

สมมติตัวแปรดัชนีไม่สามารถเปลี่ยนแปลงได้ภายในวง (ซึ่งไม่จริงเสมอขึ้นอยู่กับภาษาที่คุณกำลังใช้) เล็กน้อยของการวิเคราะห์แสดงให้เห็นว่าการดำเนินการเป็นเหมือนกับถ้าคุณออกforและcaseอย่างสิ้นเชิง และบล็อกตัวพิมพ์เล็กทั้งหมดจะถูกดำเนินการตามลำดับ


0

เพื่อให้ง่ายมากคุณกำลังซ้อนวิธีการควบคุมโฟลว์ที่แตกต่างกันสองวิธีซึ่งทำให้โค้ดนั้นยากต่อการเข้าใจ

หากคุณเห็นการวนรอบคุณมักจะสมมติว่าเงื่อนไขการวนรอบจะควบคุมตรรกะภายในการวนรอบ แต่ถ้าคุณซ้อนคำสั่งเคสทั้งหมดข้างในด้วยตรรกะของมันเองมันจะออกไปนอกหน้าต่าง


1
ไม่มีอะไรผิดปกติกับการซ้อนโครงสร้างการควบคุมสองโครงสร้าง บางครั้งคุณต้อง แต่ในกรณีนี้มันไร้ประโยชน์
Reinstate Monica

"ซึ่งทำให้รหัสยากต่อการเข้าใจ" เด็กชายนั่นคือการพูดคุยของวัน / เดือน / ปี
Peter Rowell
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.