การเขียนโปรแกรมเป็นเรื่องเกี่ยวกับงาน
ฉันคิดว่าวิธีที่ง่ายที่สุดในการตอบคำถามนี้คือการเข้าใจความก้าวหน้าของ OOP ในช่วงหลายปีที่ผ่านมา ทุกอย่างที่ทำใน OOP (และมากที่สุดในกระบวนทัศน์การเขียนโปรแกรมสำหรับเรื่องที่) เป็นแบบจำลองรอบต้องทำงานให้เสร็จ
ทุกครั้งที่มีการเรียกเมธอดผู้เรียกจะพูดว่า"ฉันไม่รู้วิธีทำงานนี้ แต่คุณรู้วิธีคุณจึงทำเพื่อฉัน"
สิ่งนี้นำเสนอความยากลำบาก: จะเกิดอะไรขึ้นเมื่อวิธีการที่เรียกโดยทั่วไปรู้วิธีการทำงาน แต่ไม่เสมอไป? เราต้องการวิธีในการสื่อสาร"ฉันต้องการช่วยคุณฉันทำจริงๆ แต่ฉันทำไม่ได้"
วิธีการเริ่มต้นในการสื่อสารนี้คือการคืนค่า "ขยะ" เพียง บางทีคุณอาจคาดหวังว่าจำนวนเต็มบวกดังนั้นเมธอดที่เรียกคืนค่าจำนวนลบ อีกวิธีหนึ่งในการบรรลุเป้าหมายนี้คือการตั้งค่าความผิดพลาดที่ใดที่หนึ่ง แต่น่าเสียดายที่ทั้งสองวิธีมีผลในต้นแบบให้ฉันตรวจสอบ-over-ที่นี่เพื่อทำให้แน่ใจว่า everything's เพียวรหัส เมื่อสิ่งต่าง ๆ ซับซ้อนมากขึ้นระบบนี้ก็จะแยกจากกัน
การเปรียบเทียบที่ยอดเยี่ยม
สมมติว่าคุณมีช่างไม้ช่างประปาและช่างไฟฟ้า คุณต้องการช่างประปาเพื่อแก้ไขอ่างของคุณดังนั้นเขาจะดูมัน มันไม่มีประโยชน์มากถ้าเขาบอกคุณเพียงคนเดียว"ขออภัยฉันไม่สามารถแก้ไขได้มันพัง" นรกมันยิ่งแย่ไปกว่านั้นถ้าเขาจะมองออกไปและส่งจดหมายถึงคุณโดยบอกว่าเขาไม่สามารถแก้ไขได้ ตอนนี้คุณต้องตรวจสอบจดหมายของคุณก่อนที่คุณจะรู้ว่าเขาไม่ได้ทำในสิ่งที่คุณต้องการ
สิ่งที่คุณต้องการคือให้เขาบอกคุณว่า"ดูสิฉันไม่สามารถแก้ไขได้เพราะดูเหมือนว่าปั๊มของคุณไม่ทำงาน"
ด้วยข้อมูลนี้คุณสามารถสรุปได้ว่าคุณต้องการให้ช่างไฟฟ้าทำการตรวจสอบปัญหา บางทีช่างไฟฟ้าอาจพบบางสิ่งที่เกี่ยวข้องกับช่างไม้และคุณจะต้องให้ช่างไม้ซ่อมมัน
Heck, คุณอาจไม่ได้รู้ว่าคุณต้องเป็นช่างไฟฟ้าที่คุณอาจไม่ทราบว่าที่คุณต้องการ คุณเป็นแค่ผู้บริหารระดับกลางในธุรกิจซ่อมแซมบ้านและคุณให้ความสำคัญกับระบบประปา ดังนั้นคุณบอกว่าคุณเป็นหัวหน้าเกี่ยวกับปัญหาและจากนั้นเขาบอกช่างไฟฟ้าให้แก้ไข
นี่คือสิ่งที่เป็นข้อยกเว้นการสร้างแบบจำลอง: โหมดความล้มเหลวที่ซับซ้อนในแบบแยกอิสระ ช่างประปาไม่จำเป็นต้องรู้เกี่ยวกับช่างไฟฟ้า - เขาไม่จำเป็นต้องรู้ด้วยซ้ำว่ามีใครบางคนในสายโซ่สามารถแก้ไขปัญหาได้ เขาเพิ่งรายงานปัญหาที่พบ
ดังนั้น ... การต่อต้านแบบ?
ตกลงดังนั้นการทำความเข้าใจจุดยกเว้นเป็นขั้นตอนแรก ต่อไปคือการเข้าใจสิ่งที่ต่อต้านรูปแบบคือ
จึงจะมีคุณสมบัติเป็นรูปแบบการต่อต้านมันต้อง
- แก้ปัญหา
- มีผลกระทบเชิงลบอย่างชัดเจน
จุดแรกพบได้ง่าย - ระบบใช้งานใช่ไหม
จุดที่สองคือ stickier เหตุผลหลักสำหรับการใช้ข้อยกเว้นเนื่องจากโฟลว์การควบคุมปกติไม่ดีคือเพราะนั่นไม่ใช่จุดประสงค์ของพวกเขา ฟังก์ชั่นส่วนใดก็ตามที่กำหนดในโปรแกรมควรมีจุดประสงค์ที่ค่อนข้างชัดเจนและการเลือกที่จะนำไปสู่ความสับสนที่ไม่จำเป็น
แต่ที่ไม่ชัดเจนอันตราย มันเป็นวิธีที่ไม่ดีที่จะทำสิ่งต่าง ๆ และแปลก แต่มีรูปแบบต่อต้าน? เลขที่ ... แปลก