เรามีโครงการขนาดใหญ่ที่จัดการได้ค่อนข้างดีในการแยกรหัส ArcObjects ออกจากตรรกะทางธุรกิจของเรา โดยทั่วไปแล้วฉันจะบอกว่าแทนที่จะพยายามที่จะเยาะเย้ยทุกอย่างแม้ว่ามันจะเป็นไปได้โดยใช้กรอบการเยาะเย้ยเพื่อให้ได้มา
ถามตัวเองว่าทำไมคุณถึงรู้สึกว่าต้องล้อเลียน โดยทั่วไปแล้วมันเป็นเพราะความเป็นนามธรรมที่ขาดหายไป คิดว่าความรับผิดชอบเล็ก ๆ และลดขนาดพื้นผิวของสัตว์ประหลาด ArcObject ขนาดใหญ่ที่น่าเกลียด หลีกเลี่ยงการลากไปรอบ ๆ ประเภท ArcObject เพียงเพราะบางแง่มุมของพวกเขาเป็นสิ่งจำเป็น
ฉันสามารถยกตัวอย่างที่เป็นรูปธรรมจากโครงการของเรา ส่วนของรหัสดูเหมือนจะขึ้นอยู่กับ IMxDocument มันเปิดออกด้วยเหตุผลเพียงอย่างเดียวคือต้องรีเฟรชมุมมองที่ใช้งาน ดังนั้นเราจึงสร้างอินเทอร์เฟซ IViewRefresher แทนและทำงานบนมันเท่านั้น ง่ายต่อการเยาะเย้ยและทดสอบ นอกจากนี้มันทำให้เจตนาของรหัสชัดเจนขึ้นและกำจัดสิ่งล่อใจให้ใครบางคนเริ่มทำสิ่งที่ตลกด้วย IMxDocument ที่พวกเขาไม่ควรทำเพราะสิ่งที่เราต้องการทำที่นี่คือการรีเฟรช แบบฝึกหัดเดียวกันนี้สามารถทำได้ด้วยรหัส ArcObjects มากมาย
นอกจากนี้เราได้รวมการเข้าถึงคลาสฟีเจอร์ทั้งหมดใน wrapper Safe type อีกครั้งให้รหัสที่จำลองได้เพื่อป้องกันรหัสธุรกิจจาก ArcObjects
เราได้พูดคุยกันแล้วไม่ได้ใช้ ArcObjects ประเภทเรขาคณิต แต่ขณะนี้เราอนุญาตให้ส่วนต่อประสานเหล่านั้นถูกใช้โดยตรงในรหัสของเรา (อย่างไรก็ตามอนุญาตให้ใช้ความรู้ส่วนต่อประสานเท่านั้นและอินสแตนซ์รูปเรขาคณิตทั้งหมดใช้โรงงานรูปทรงเรขาคณิตของเราเอง)
โดยสรุปแล้วฉันไม่ได้เป็นคนล้อเลียนการเยาะเย้ย แต่ฉันขอแนะนำให้ล้อเลียนในระดับที่แตกต่างของนามธรรมกว่า ArcObjects