การออกแบบโดยสัญญา (DbC) เป็นวิธีการตั้งโปรแกรมป้องกันหรือไม่
เป็นวิธีหนึ่งในการเขียนโปรแกรมที่ดีกว่าในบางกรณีมากกว่าวิธีอื่นหรือไม่
การออกแบบโดยสัญญา (DbC) เป็นวิธีการตั้งโปรแกรมป้องกันหรือไม่
เป็นวิธีหนึ่งในการเขียนโปรแกรมที่ดีกว่าในบางกรณีมากกว่าวิธีอื่นหรือไม่
คำตอบ:
การออกแบบโดยสัญญาและการตั้งโปรแกรมการป้องกันนั้นมีความแตกต่างกันใน DbC คุณกำหนดสัญญาระหว่างผู้ทำงานร่วมกันและโปรแกรมของคุณภายใต้สมมติฐานที่ว่าผู้ทำงานร่วมกันปฏิบัติตามสัญญาของพวกเขา ในการตั้งโปรแกรมป้องกันคุณตั้งโปรแกรมภายใต้สมมติฐานที่ว่าผู้ทำงานร่วมกันของคุณละเมิดสัญญาของพวกเขา
รูทีนสแควร์รูทจริงที่เขียนในสไตล์ DbC จะระบุไว้ในสัญญาว่าคุณไม่ได้รับอนุญาตให้ส่งผ่านจำนวนลบและเพียงแค่คิดว่ามันไม่สามารถพบจำนวนลบได้ รูทีนสแควร์รูทจริงที่เขียนป้องกันจะถือว่ามันถูกส่งผ่านจำนวนลบและใช้ความระมัดระวังที่เหมาะสม
หมายเหตุ: เป็นไปได้แน่นอนว่าใน DbC บุคคลอื่นจะตรวจสอบสัญญา ในหอไอเฟลระบบสัญญาจะตรวจสอบจำนวนลบ ณ รันไทม์และโยนข้อยกเว้นที่เหมาะสม ใน Spec # ผู้ทดสอบทฤษฎีบทจะตรวจสอบจำนวนลบในเวลารวบรวมและล้มเหลวในการสร้างหากไม่สามารถพิสูจน์ได้ว่ารูทีนจะไม่ถูกส่งผ่านจำนวนลบ ความแตกต่างคือโปรแกรมเมอร์ไม่ได้ทำการตรวจสอบนี้
การออกแบบโดยสัญญา (DbC) เป็นวิธีการตั้งโปรแกรมป้องกันหรือไม่
ใช่.
"การตั้งโปรแกรมป้องกัน" มักจะเป็นข้อแก้ตัวให้เสียเวลา มันมักจะเสียเวลาตรวจสอบสิ่งที่จะทำให้เกิดข้อยกเว้นสามัญ แทนที่จะเป็นข้อยกเว้นจะมีการเขียนคำสั่ง IF พิเศษแทนคำสั่งจัดการข้อยกเว้น
กำหนดสัญญาและทำกับมัน
เมื่อมีคนละเมิดสัญญาโปรแกรมจะ - ในช่วงเวลาปกติของเหตุการณ์ - ทำลายและเพิ่มข้อยกเว้นตามปกติซึ่งสามารถจัดการได้ตามปกติ
"การตั้งโปรแกรมการป้องกัน" และ "การป้องกันข้อผิดพลาด" สามารถแสดงเพื่อเพิ่มข้อผิดพลาด (เพราะการตรวจสอบการป้องกันข้อผิดพลาดนั้นผิดพลาดเอง) แทนที่จะป้องกันข้อผิดพลาด
การจัดการข้อยกเว้นสามารถปิดบันทึกและจัดการข้อยกเว้นได้ดีกว่า "การตั้งโปรแกรมป้องกัน"