ระวัง!
การยืนยันจะถูกลบเมื่อรันไทม์เว้นแต่คุณจะระบุอย่างชัดเจนเพื่อ "เปิดใช้งานการยืนยัน" เมื่อรวบรวมรหัสของคุณ Java Assertions ไม่ควรใช้กับรหัสการผลิตและควร จำกัด วิธีการส่วนตัว (ดูข้อยกเว้นการยืนยัน ) เนื่องจากวิธีการส่วนตัวคาดว่าจะเป็นที่รู้จักและใช้งานโดยนักพัฒนาเท่านั้น นอกจากนี้assert
จะโยนAssertionErrorที่ขยายError
ไม่ได้Exception
และซึ่งโดยปกติจะระบุว่าคุณมีข้อผิดพลาดที่ผิดปกติมาก (เช่น "OutOfMemoryError" ซึ่งยากต่อการกู้คืนจากใช่หรือไม่) คุณไม่คาดว่าจะสามารถรักษาได้
ลบการตั้งค่าสถานะ "เปิดใช้งานการยืนยัน" และตรวจสอบกับดีบักเกอร์และคุณจะเห็นว่าคุณจะไม่เหยียบโทร IllegalArgumentException การโยน ... เนื่องจากรหัสนี้ยังไม่ได้รวบรวม (อีกครั้งเมื่อลบ "ea")
มันเป็นการดีกว่าที่จะใช้โครงสร้างที่สองสำหรับวิธีสาธารณะ / ที่ได้รับการป้องกันและถ้าคุณต้องการบางสิ่งที่ทำในรหัสบรรทัดเดียวมีอย่างน้อยหนึ่งวิธีที่ฉันรู้ ผมเองใช้ฤดูใบไม้ผลิกรอบของAssert
ชั้นเรียนที่มีไม่กี่วิธีในการตรวจสอบข้อโต้แย้งและโยน 'IllegalArgumentException' กับความล้มเหลว โดยทั่วไปสิ่งที่คุณทำคือ:
Assert.notNull(obj, "object was null");
... ซึ่งอันที่จริงแล้วจะรันรหัสเดียวกันกับที่คุณเขียนไว้ในตัวอย่างที่สองของคุณ มีไม่กี่วิธีที่มีประโยชน์อื่น ๆ เช่นhasText
, hasLength
ในการมี
ฉันไม่ชอบเขียนโค้ดเกินความจำเป็นฉันจึงมีความสุขเมื่อฉันลดจำนวนบรรทัดที่เขียนเป็น 2 (2 บรรทัด> 1 บรรทัด) :-)
obj.hashCode()
แทน ;-)