ฉันกำลังขัดแย้งกับนักพัฒนาที่มีประสบการณ์มากกว่าในเรื่องนี้และสงสัยว่าคนอื่นคิดอย่างไรกับมัน สภาพแวดล้อมของเราคือ Java, EJB 3, บริการและอื่น ๆ
รหัสที่ฉันเขียนเรียกบริการเพื่อรับสิ่งของและสร้างสิ่งต่าง ๆ ปัญหาที่ฉันพบคือฉันได้รับข้อยกเว้นตัวชี้ null ซึ่งไม่สมเหตุสมผล ตัวอย่างเช่นเมื่อฉันขอให้บริการเพื่อสร้างวัตถุฉันได้รับกลับมาเป็นโมฆะ; เมื่อฉันพยายามค้นหาวัตถุที่มีรหัสที่ถูกต้องที่รู้จักฉันได้รับ null กลับ ฉันใช้เวลาพยายามหาสิ่งที่ผิดพลาดในรหัสของฉัน ตั้งแต่ฉันมีประสบการณ์น้อยฉันมักจะคิดว่าฉันทำอะไรผิด แต่กลับกลายเป็นว่าเหตุผลที่ผลตอบแทน Null คือความปลอดภัย หากผู้ใช้หลักที่ใช้บริการของฉันไม่ได้รับสิทธิ์ที่ถูกต้องสำหรับบริการเป้าหมายมันจะส่งคืนค่าว่าง บริการอื่น ๆ ส่วนใหญ่ที่นี่ไม่ได้รับการบันทึกไว้เป็นอย่างดีดังนั้นจึงเห็นได้ชัดว่านี่เป็นสิ่งที่คุณต้องรู้
สิ่งนี้ค่อนข้างสับสนในฐานะนักพัฒนาที่เขียนโค้ดที่โต้ตอบกับบริการ มันจะสมเหตุสมผลมากกว่าสำหรับฉันถ้าบริการนี้เป็นข้อยกเว้นที่จะบอกฉันว่าผู้ใช้ไม่มีสิทธิ์ที่เหมาะสมในการโหลดสิ่งนี้หรือเพื่อสร้างสิ่งนั้น ฉันจะทราบได้ทันทีว่าเหตุใดบริการของฉันจึงไม่ทำงานตามที่คาดไว้
นักพัฒนาที่มีประสบการณ์มากขึ้นซึ่งเขียนบริการแย้งว่าการขอข้อมูลไม่ใช่เงื่อนไขข้อผิดพลาดและข้อยกเว้นนั้นควรถูกส่งไปในเงื่อนไขข้อผิดพลาดเท่านั้นไม่ใช่เมื่อผู้ใช้ไม่สามารถเข้าถึงข้อมูลได้ ข้อมูลนี้มักจะถูกค้นหาใน GUI และสำหรับผู้ใช้ที่ไม่มีสิทธิ์ที่ถูกต้องสิ่งเหล่านี้ก็คือ "ไม่มีตัวตน" ดังนั้นในระยะสั้น: ถามไม่ผิดดังนั้นไม่มีข้อยกเว้น รับเมธอดส่งคืน null เนื่องจากสำหรับผู้ใช้เหล่านั้นสิ่งเหล่านั้น "ไม่มีอยู่" สร้างเมธอดส่งคืนค่าว่างเมื่อผู้ใช้ไม่ได้รับอนุญาตให้สร้างสิ่งนั้น
นี่เป็นเรื่องปกติและ / หรือแนวปฏิบัติที่ดีหรือไม่? ฉันชอบที่จะใช้ข้อยกเว้นเพราะฉันพบว่าการรู้ว่าเกิดอะไรขึ้น ตัวอย่างเช่นฉันต้องการที่จะโยน NotFoundException ถ้าคุณถามหาวัตถุที่มี ID ที่ไม่ถูกต้องแทนที่จะส่งคืน null