หากมีวิธีการ
bool DoStuff() {
try {
// doing stuff...
return true;
}
catch (SomeSpecificException ex) {
return false;
}
}
มันควรจะถูกเรียกว่าค่อนข้างIsStuffDone()
?
ผู้ใช้ทั้งสองชื่ออาจตีความผิด: หากชื่อเป็นDoStuff()
สาเหตุว่าทำไมจึงส่งคืนบูลีน หากชื่อIsStuffDone()
ไม่ชัดเจนว่าวิธีการทำงานหรือตรวจสอบผลของมันเท่านั้น
มีแบบแผนสำหรับกรณีนี้หรือไม่? หรือวิธีการอื่นเป็นวิธีนี้ถือว่ามีข้อบกพร่อง? ยกตัวอย่างเช่นในภาษาที่มีพารามิเตอร์ที่ส่งออกเช่น C # void
ตัวแปรสถานะบูลีนอาจจะส่งผ่านไปยังวิธีการที่เป็นหนึ่งและประเภทผลตอบแทนของวิธีการที่จะเป็น
แก้ไข: ในการจัดการข้อยกเว้นปัญหาเฉพาะของฉันไม่สามารถมอบหมายโดยตรงไปยังผู้โทรเพราะวิธีการเป็นส่วนหนึ่งของการใช้อินเตอร์เฟซ ดังนั้นผู้เรียกไม่สามารถเรียกเก็บเงินกับการจัดการกับข้อยกเว้นทั้งหมดของการใช้งานที่แตกต่างกัน ไม่คุ้นเคยกับข้อยกเว้นเหล่านั้น แต่โทรสามารถจัดการกับข้อยกเว้นที่กำหนดเองเช่นStuffHasNotBeenDoneForSomeReasonException
เป็นได้รับการแนะนำในคำตอบของ npinti และแสดงความคิดเห็น
boolean
แทนที่หรือตัดผ่านข้อยกเว้นมักจะผิดเสมอ
BadlyDesignedMethodInSeriousNeedOfRefactoring
? และเพื่อตอบคำถามของคุณเกี่ยวกับข้อยกเว้น - ฉันจะให้ผู้โทรจัดการหรือจับพวกเขาแล้วโยนข้อยกเว้นที่กำหนดเองซึ่งหมายความว่า "วิธีนี้ไม่มีงาน" แบ่งปันและเพลิดเพลิน
if (FirstMethodSucceeds(problem) or SecondMethodSucceeds(problem) or ...) Hurray(); else UniversalSolve(problem);
มันจะทำให้ความรู้สึกที่จะเขียนสิ่งที่ต้องการ การทำเช่นเดียวกันกับข้อยกเว้น (กำหนดเอง) จะซับซ้อนกว่าอย่างไร้ประโยชน์