ลองย้อนกลับไปและใช้ตัวอย่างที่แตกต่างกันซึ่งคำนวณค่าเฉลี่ยเลขคณิตของอาร์เรย์ของค่า
หากอาร์เรย์อินพุตว่างเปล่า (หรือ null) คุณสามารถทำตามคำขอของผู้โทรได้หรือไม่? ไม่ตัวเลือกของคุณคืออะไร? คุณทำได้:
- ปัจจุบัน / ส่งคืน / โยนข้อผิดพลาด ใช้แบบแผน codebase ของคุณสำหรับคลาสของข้อผิดพลาดนั้น
- เอกสารที่ค่าเช่นศูนย์จะถูกส่งกลับ
- เอกสารที่จะส่งคืนค่าที่ไม่ถูกต้องที่กำหนด (เช่น NaN)
- เอกสารที่จะส่งคืนค่าเวทย์มนตร์ (เช่น min หรือ max สำหรับประเภทหรือค่าที่บ่งบอกถึงความหวังบางอย่าง)
- ประกาศผลที่ไม่ได้ระบุ
- ประกาศการกระทำที่ไม่ได้กำหนด
- เป็นต้น
ฉันว่าพวกเขาให้ข้อผิดพลาดหากพวกเขาให้คุณใส่ไม่ถูกต้องและคำขอไม่สามารถดำเนินการให้เสร็จสมบูรณ์ ฉันหมายถึงข้อผิดพลาดอย่างหนักตั้งแต่วันแรกเพื่อให้พวกเขาเข้าใจข้อกำหนดของโปรแกรมของคุณ ท้ายที่สุดแล้วฟังก์ชั่นของคุณไม่สามารถตอบสนองได้ หากการดำเนินการอาจล้มเหลว (เช่นคัดลอกไฟล์) ดังนั้น API ของคุณควรให้ข้อผิดพลาดที่พวกเขาสามารถจัดการได้
เพื่อให้สามารถกำหนดวิธีที่ห้องสมุดของคุณจัดการกับคำขอและคำขอที่ผิดรูปแบบซึ่งอาจล้มเหลว
มันสำคัญมากที่รหัสของคุณจะต้องสอดคล้องกันในการจัดการข้อผิดพลาดของคลาสเหล่านี้
ประเภทถัดไปคือการตัดสินใจว่าห้องสมุดของคุณจัดการกับคำขอไร้สาระได้อย่างไร เดินทางกลับไปตัวอย่างคล้ายกับคุณ - bool FileExistsAtPath(String)
ขอใช้ฟังก์ชั่นซึ่งเป็นตัวกำหนดว่าไฟล์ที่มีอยู่ในเส้นทางที่: หากไคลเอนต์ผ่านสตริงว่างคุณจะจัดการสถานการณ์นี้ได้อย่างไร อาร์เรย์ว่างหรือโมฆะจะถูกส่งไปที่void SaveDocuments(Array<Document>)
ใด ตัดสินใจสำหรับ library / codebase ของคุณและสอดคล้องกัน. ฉันบังเอิญพิจารณาข้อผิดพลาดของกรณีเหล่านี้และห้ามไม่ให้ลูกค้าส่งคำขอที่ไร้สาระด้วยการตั้งค่าสถานะเป็นข้อผิดพลาด (ผ่านการยืนยัน) บางคนจะต่อต้านความคิด / การกระทำนั้นอย่างยิ่ง ฉันพบว่าการตรวจจับข้อผิดพลาดนี้มีประโยชน์มาก มันเป็นเรื่องที่ดีมากสำหรับการค้นหาปัญหาในโปรแกรม - ด้วยท้องที่ที่ดีสำหรับโปรแกรมที่ละเมิด โปรแกรมมีความชัดเจนและถูกต้องมาก (พิจารณาวิวัฒนาการของ codebase ของคุณ) และอย่าเผาวงจรภายในฟังก์ชั่นที่ไม่ทำอะไรเลย วิธีนี้มีขนาดเล็กลง / สะอาดกว่าและโดยทั่วไปการตรวจสอบจะถูกส่งไปยังสถานที่ที่อาจมีปัญหา