มีเหตุผลที่ดีที่จะใส่รหัสเดียวกันทั้งในลองและจับบล็อก?


13

ในไฟล์: app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Datetime.phpภายในrender()วิธีการดูเหมือนว่ามีการเรียกใช้รหัสเดียวกันทั้งในบล็อก try และ catch ข้อยกเว้นไม่ได้จัดการเลย ฉันอยากรู้ว่าเหตุผลอะไร (ถ้ามี) สำหรับการเขียนโค้ดเช่นนี้:

try {
     $data = Mage::app()->getLocale()
         ->date($data, Varien_Date::DATETIME_INTERNAL_FORMAT)->toString($format);
} catch (Exception $e) {
     $data = Mage::app()->getLocale()
         ->date($data, Varien_Date::DATETIME_INTERNAL_FORMAT)->toString($format);
}

คำตอบ:


3

สำหรับฉันไม่มีเหตุผลสำหรับรหัสดังกล่าวในกรณีเฉพาะนั้น

ฉันสามารถคิดถึงเหตุผลที่คุณสามารถทำได้เมื่อจัดการกับการร้องขอให้หมดเวลา

ตัวอย่างเช่น:

  • บางรหัสใช้เวลานานมากในการทำให้เสร็จ
  • คุณพยายามทำบางสิ่งที่ขึ้นอยู่กับผลลัพธ์ของรหัสนี้
  • เป็นรหัสที่ยังไม่ได้ทำข้อยกเว้นจะถูกโยนทิ้ง
  • ในบล็อก catch คุณเพิ่มเวลารอ ( sleep) แล้วลองอีกครั้ง

แต่ในกรณีใด ๆ นี่เป็นการออกแบบที่แย่มากและไม่ดีในแง่ของประสิทธิภาพเนื่องจากข้อยกเว้นเป็นการสิ้นเปลืองทรัพยากร

catchบล็อกจะต้องใช้เฉพาะสำหรับการจัดการข้อยกเว้นและการย้อนกลับของสิ่งที่ยังไม่เสร็จ (เช่นย้อนกลับฐานข้อมูล)

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

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